타입계층도

Unknown Type
// Unknow Type
function unknowExamp() {
// 업 캐스팅
let a: unknown = 1;
let b: unknown = "hello";
let c: unknown = true;
let d: unknown = null;
let e: unknown = undefined;
// 다운 캐스팅(불가)
let unknowVar: unknown;
let number: number = unknowVar;
let str: string = unknowVar;
let bool: boolean = unknowVar;
}
Never Type
// Never Type : 모든 타입의 서브 타입(공집합)
function neverExamp() {
function nerverFunc(): never {
while (true) {}
}
let num: number = nerverFunc();
let str: string = nerverFunc();
let bool: boolean = nerverFunc();
// 모든 타입의 서브타입임에 모든 타입이 들어갈 수 있다.(업 캐스팅)
// 다운 캐스팅(불가))
let never1: never = 10;
let never2: never = "string";
let never3: never = true;
}
Void Type
function voidExam() {
function voidFunc(): void {
console.log("hi");
}
// 다운 캐스팅(불가)
let voidVar: void = undefined;
}
Any Type
타입 계층도를 완벽히 무시
function anyExam() {
let unknownVar: unknown;
let anyVar: any;
let undefinedVar: undefined;
let neverVar: never;
anyVar = unknownVar;
undefinedVar = anyVar;
neverVar = anyVar; // 오류 발생
// any타입은 never타입으로까지 다운 캐스팅할수는 없다.
}
Last updated