DB
ANY를 쓴다구요?
NOHCODING
2024. 5. 23. 20:22
반응형
any타입은 모든타입을 사용할 수 있습니다. 그렇기에 종종 알 수 없는 타입에러가 발생할 때 any를 사용하여 해결 할 수 있습니다. 하지만 any 타입은 지양하는 것이 좋습니다.
any 타입을 쓰면 타입스크립트가 타입을 검사하지 못하므로 타입스크립트를 사용하는 의미가 퇴색됩니다. 게다가 any 타입을 통해 파생되는 결과물도 any 타입이 됩니다.
let str : any = 'hello';
const result = str.toFixed(); //const result : any
🌟 any로 추론하고 에러가 발생하는 경우
직접 any를 쓰지 않는다면 타입스크립트가 타입을 any로 추론할 때 종종 나타나는데, 대부분의 경우 any 로 추론되면 impliciAny 에러가 발생합니다.
//impliciAny 에러가 발생
function plus(x, y){
return x + y;
}
🌟 any로 추론하고 에러가 발생하지 않는 경우
any 여도 에러가 발생하지 않을 때가 있는데, 빈 배열을 선언하고 타입을 명시하지 않으면 해당 배열이 any[] 타입이 됩니다.
const arr = []; //const arr : any[]
const arr1 : string [] = [];
//any[] : 인덱스 요소를 추가할 때마다 추론하는 타입이 변환
const arr2 = []
arr2.push(1); //const arr2 : number[]
arr2.push('1'); //const arr2 : (string|number)[]
🌟 타입스크립트가 명시적으로 any를 반환하는 경우
타입스크립트가 명시적으로 any를 반환하는 경우 대표적으로 JSON.parse와 fetch함수가 있습니다!
fech('url').then((response)=>{
return response.json();
}).then((result)=>{ //result : any
});
//직접 타이핑하여(제네릭 사용) 향후 모든 타입이 any가 되는 것을 방지해야합니다.
fech('url').then<{ data : string }>((response)=>{
return response.json();
}).then((result)=>{ //result : any
});
반응형