- Typescript 3.0 버전부터 지원
- any와 짝으로 any 보다 Type-safe한 타입
- any와 같이 아무거나 할당할 수 있다.
- 컴파일러가 타입을 추론할 수 있게끔 타입의 유형을 좁히거나
- 타입을 확정해주지 않으면 다른 곳에 할당 할 수 없고, 사용할 수 없다.
- unknown 타입을 사용하면 runtime error를 줄일 수 있을 것 같다.
- 사용 전에 데이터의 일부 유형의 검사를 수행해야 함을 알리는 API에 사용할 수 있을 것 같다.
// any
const anyArr: any = ['😄', '😍', '🥰', '😎', '😞', '🥳'];
anyArr.a.b.c;
// unknown
const unknownArr: unknown = ['😄', '😍', '🥰', '😎', '😞', '🥳'];
unknownArr.a.b.c; // compile error
const unknownString: unknown = '알 수 없어';
let text: string = unknownString; // compile error
// type assertion
text = unknownString as string; // success
// type guard
if (typeof unknownString === 'string') {
text = unknownString; // success
}