티스토리 뷰
🌧️ 타입 계층도
☂️ unknwon 타입
가장 상단에 위치하는 타입
모든 타입의 슈퍼 타입으로 모든 타입의 값을 담을 수 있다.
// 업캐스팅은 가능
let a:unknown = 1;
let b:unknown = "hello";
let c:unknown = true;
let d:unknown = null;
let e:unknown = undefined;
// any 타입을 제외한 다운 캐스팅은 불가능
let unknownVar:unknown; // ❌
let num:number = unknownVar; // ❌
let str:string = unknownVar; // ❌
let bool:boolean = unknownVar; // ❌
// any 타입으로 다운 캐스팅은 가능
let any:any = unknownVar;
☂️ never 타입
가장 하단에 위치하는 타입
모든 타입의 서브 타입으로 모든 집합의 부분 집합인 공집합과 같다.
공집합
아무것도 포함하지 않는 비어있는 집합
never 타입은 주로 반환되는 값이 없는 함수의 타입을 정의할 때 사용한다.
function neverFunc():never{
while(true){} // neverFunc 함수가 반환하는 것은 공집합임을 의미
}
never 타입은 모든 타입의 서브 타입이므로 모든 타입으로의 업캐스팅이 가능하다.
// 업캐스팅 가능
let num:number = neverFunc();
let str:string = neverFunc();
let bool:boolean = neverFunc();
// 다운 캐스팅 불가능
let never1:never = 1; // ❌
let never2:never = "hello"; // ❌
let never3:never = true; // ❌
let never4:never = null; // ❌
☂️ void 타입
return 값이 없는 함수의 반환값 타입을 명시할 때 사용하는 타입으로 undefined 타입의 슈퍼 타입이다.
function voidFunc():void{
console.log("hello")
return undefined; // undefined로 반환되므로 업캐스팅과 같은 의미
}
// void 타입은 undefined 타입의 슈퍼 타입으로 업캐스팅이 가능
let voidVar:void = undefined;
☂️ any 타입
타입 계층도를 완전히 무시하는 치트키같은 타입
any 타입은 never를 제외한 모든 타입의 슈퍼 타입이 될 수도 서브 타입이 될 수도 있다.
let unknownVar:unknown;
let anyVar:any;
let undefinedVar:undefined;
let neverVar:never;
// unknwon 타입의 다운 캐스팅이 가능
anyVar = unknownVar;
// 다운 캐스팅 가능
undefinedVar = anyVar;
// never 타입으로 다운 캐스팅은 불가능
neverVar = anyVar; // ❌
타입 호환 표
728x90
'코딩 > 한 입 크기로 잘라먹는 타입스크립트' 카테고리의 다른 글
[TypeScript] 대수 타입 (0) | 2023.08.11 |
---|---|
[TypeScript] 객체 타입의 호환성 (0) | 2023.08.11 |
[TypeScript] 집합의 관점에서의 타입스크립트 (0) | 2023.08.08 |
[TypeScript] Void 타입과 Never 타입 (0) | 2023.07.06 |
[TypeScript] Any 타입과 Unknown 타입 (0) | 2023.07.04 |