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
});
반응형