어떤 타입이든 할당 가능
TypeScript의 타입 체크를 비활성화
let value: any = 10;
value = "hello";
value = true;
const num: number= parseInt(value); // 컴파일 에러 없음, 런타임 에러 발생
any는 예기치 못함 런타임 에러를 발생시키므로 사용을 권장하지 않음
any와 동일하게 모든 타입을 할당할 수 있지만
사용할 때 타입 체크가 없으면 컴파일 에러 발생(더 안전)
let value: unknown = 10;
value = 'hello';
const str: string = value.toUpperCase(); // 컴파일 에러 (타입 체크 필요)
if(typeof value === 'string') const str: string = value.toUpperCase(); // 타입 안전
절대 발생하지 않는 값
// 항상 에러를 던져 반환값이 있을 수 없는 함수
function throwError(message: string): never {
throw new Error(message);
}
// 무한 루프를 돌아 반환값이 있을 수 없는 함수
function infiniteLoop(): never {
while (true) {}
}
그럼 왜 사용하나?