'타입스크립트 프로그래밍' 도서와 제로초님의 '타입스크립트 올인원' 강의를 보고 any, unkown 타입의 개념에 대해 알아보았다.
그리고 둘의 차이점이 무엇인지, 또 왜 any 대신 unknown이 권장되는지도 알아보았다.
let a: any = '1'; // any
let b: any = 1; // any
let c = a + b; // any 에러 안남
// 지금은 30이지만
// 나중에 어떤 타입이 될지 몰라서 unknown 타입으로 지정한 상황
let a: unknown = 30;
// true
// unknown 타입인 값과 아닌 값 비교 가능
let b = a === 30;
// 에러가 난다
// 에러메시지: 'a' is of type 'unknown'
let c = a + 10;
// 타입을 정제했기 때문에 에러가 나지 않는다
if (typeof a === 'number') {
let c = a + 10; // number
}
아래의 isNil 함수는 param을 입력받아서 해당 param이 null이나 undefined인지를 체크해서 true/false를 리턴하는 함수이다.
이 경우 param은 단순히 null, undefined인지에 대한 체크만 하기 때문에 어떠한 타입이 들어올지 몰라도 되므로 unknown을 사용할 수 있다.
const isNil = (param: unknown): boolean => param === null || param === undefined