[TypeScript] 타입 계층도와 기본타입

kjy0124·2026년 2월 16일
post-thumbnail

🎯 타입 계층도

✅ Unknown 타입

unknown은 모든 타입을 업캐스팅할 수 있어 모든 값들을 집어 넣을 수 있다.

function unknownExam() {
  let a: unknown = 1;
  let b: unknown = "hello"; 
  let c: unknown = true;
  let d: unknown = null;
  let e: unknown = undefined;
}

하지만 반대로는 불가능

  • num, str, bool에서 한 것이 다운케스팅이기 때문

✅ Never 타입

Never 타입 = 공집합

function neverExam() {
  function neverFunc(): never {
    while (true) {}
  }

  let num: number = neverFunc();
  let str: string = neverFunc();
  let bool: boolean = neverFunc();
}
  • unknown 타입과 같이 never 타입에서 업캐스팅으로 num, str, bool을 가리키고 있기 때문에 가능

  • 하지만 반대로는 다운캐스팅이기 때문에 안됨

✅ Void 타입

반환 값이 없는 함수에 사용

function voidExam() {
  function voidFuc() {
    console.log("hi");
  }

  let voidVar: void = undefined;
}
  • undefinedvoid에 업캐스팅을 하기 때문에 사용 가능

✅ Any 타입

  • any 타입은 모든 타입에 대해 슈퍼 위치를 하고 있음
  • 그리고 모든 위치의 서브타입이기도 한다.(never타입 제외)
function anyExam() {
  let unknownVar: unknown;
  let anyVar: any;
  let undefinedVar: undefined;

  anyVar = unknownVar;
  undefinedVar = anyVar;
}
  • 위 코드에서 볼 수 있듯이 unknown타입이 any타입으로 다운캐스팅이 되고 있는데도 오류가 안생김
  • undefined타입에 any타입의 값을 넣고 있는데도 오류가 안생김

이처럼 any 타입은
자신에게 오는 다운캐스팅도 가능하며,
자신이 다운캐스팅하는 것도 가능
하지만 never타입이랑은 안된다.
그리하여 any 타입은 타입계층도를 완전히 무시
사용을 권하진 않음

위 설명을 아래 호환표 참고


출처

한 입 크기로 잘라먹는 타입스크립트
https://www.inflearn.com/course/한입-크기-타입스크립트/dashboard

profile
개발 공부...

0개의 댓글