The type hierarchy tree

위의 블로그를 번역한 글입니다. 자세한 글은 위 블로그를 참고해주세요.


간단한 타입스크립트 예제

다음 코드를 읽고 머릿속에서 각 할당에 대한 오류가 있는지 예측해보세요.

let stringVariable: string = 'string'
let anyVariable: any
let unknownVariable: unknown 

anyVariable = stringVariable
unknownVariable = stringVariable
stringVariable = anyVariable
stringVariable = unknownVariable

stringVariable = anyVariable string type에 any 값을 대입해서 오류가 생길 것 같다.

stringVariable = unknownVariable string type에 unknown 값을 대입해서 오류가 생길 것 같다.

결과는?

let stringVariable: string = "string";
let anyVariable: any;
let unknownVariable: unknown;

anyVariable = stringVariable;
unknownVariable = stringVariable;
stringVariable = anyVariable;
stringVariable = unknownVariable; // 'unknown' 형식은 'string' 형식에 할당할 수 없습니다.
let stringVariable: string = 'string'
let anyVariable: any
let neverVariable: never

neverVariable = stringVariable
neverVariable = anyVariable
anyVariable = neverVariable
stringVariable = neverVariable

stringVariable = neverVariable string type에 never 값을 대입해서 오류가 생길 것 같다.

anyVariable = neverVariable any type에 never type은 호환이 되지 않을 것 같아 오류가 생길 것 같다.

결과는?

let stringVariable: string = "string";
let anyVariable: any;
let neverVariable: never;

neverVariable = stringVariable; // 'string' 형식은 'never' 형식에 할당할 수 없습니다.
neverVariable = anyVariable; // 'any' 형식은 'never' 형식에 할당할 수 없습니다.
anyVariable = neverVariable;
stringVariable = neverVariable;
let undefinedVariable: undefined 
let voidVariable: void
let unknownVariable: unknown

voidVariable = undefinedVariable
undefinedVariable = voidVariable
voidVariable = unknownVariable