요약

내용

  • Typescript에서 모르는 타입의 값을 다룰 때, anyunknown 두 선택지가 있다.
  • 두 타입 모두 특정 타입을 명시하지 않을 때 사용할 수 있다.
  • any
    • 모든 타입을 포함한다.
    • any로 선언된 변수는 어떤 타입의 값이든 할당할 수 있으며, 타입 검사 없이 사용할 수 있다.
    • 타입 안정성을 잃게 되어, 런타임 에러를 발생시킬 가능성이 높아진다.
let value: any;
value = 42;
value = "hello";
 
let number: number = value; // 타입 에러 없음
console.log(value.toUpperCase()); // 런타임 에러 가능성 있음
  • unknown
    • 모든 타입을 포함하지만, unknown 타입의 값에 대해 타입 검사를 하지 않고 사용할 수 없다.
    • 타입을 좁히거나 타입 검사를 통해 안전하게 다룰 수 있다.
let value: unknown;
value = 42;
value = "hello";
 
if (typeof value === "string") {
    console.log(value.toUpperCase()); // 안전
} else {
    console.log("value is not a string");
}
 
let number: number = value; // 타입 에러
  • unknown을 사용해야하는 이유
    • 타입 안정성: 타입 검사를 강제하여 의도하지 않은 타입 오류를 방지할 수 있다.
    • 유연성: 어떤 타입이 들어올지 모르는 상황에서 타입 검사를 통해 안전하게 처리할 수 있다.

참고

  • 이펙티브 타입스크립트