TypeScript
unknown과 any 차이점 알아보기
citron031
2023. 8. 19. 20:17
unknown과 any 모두 유연하게 타입을 설정하기 위해서 사용된다.
🌧️ 다만, 타입 에러를 잡아내기 어렵기에 권장되지는 않는다.
다만, 이 둘의 차이점으로는 any가 더 유연하고 안전성이 낮은 반면, unknown은 타입 안정성을 유지하면서 유연함을 제공한다.
unknown vs any 예제
// unknown 타입
let value1: unknown;
value1 = 123; // 할당 가능
value1 = 'Hello'; // 할당 가능
// any 타입
let value2: any;
value2 = 123; // 할당 가능
value2 = 'Hello'; // 할당 가능
기본적으로는 any와 unknown모두 다양한 타입을 할당할 수 있게 해준다.
// unknown과 any의 차이
let num1: number = value1; // Error: 'unknown' 타입은 'number' 타입에 할당할 수 없음
let num2: number = value2; // any 타입은 모든 타입에 할당 가능
// unknown의 안전한 타입 변환
if (typeof value1 === 'number') {
let num3: number = value1; // 가능: 값의 타입 체크 후 할당
}
// any는 모든 타입을 허용하여 타입 체크 없이도 할당이 가능
let str: string = value2; // 가능: any 타입은 모든 타입으로 할당 가능
하지만, any타입이 다른 타입의 변수에 할당될 수 있는 반면, unknown은 다른 타입의 변수에 할당될 수 없다.
unknown을 다른 타입의 변수에 할당하고자 한다면, 타입을 체크하는 과정이 꼭 필요하다.
function func1(a: any) {
a.b(); // OK
}
function func2(a: unknown) {
a.b(); // Error
}
또한, any는 property 접근에 제한이 없지만, unknown의 property는 접근에 제약이 있다.
🐝 참고 자료
https://www.typescriptlang.org/docs/handbook/2/functions.html#unknown
Documentation - More on Functions
Learn about how Functions work in TypeScript.
www.typescriptlang.org