Typescript에서 모르는 타입의 값을 다룰 때, any와 unknown 두 선택지가 있다.
두 타입 모두 특정 타입을 명시하지 않을 때 사용할 수 있다.
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을 사용해야하는 이유
타입 안정성: 타입 검사를 강제하여 의도하지 않은 타입 오류를 방지할 수 있다.
유연성: 어떤 타입이 들어올지 모르는 상황에서 타입 검사를 통해 안전하게 처리할 수 있다.