타입스크립트 이해하기

백아름·2023년 7월 12일
0

프론트엔드

목록 보기
65/80

1. 타입은 집합이다

  • 동일한 속성과 특징을 모아둔 집합이다.

  • 20 number literal type 집합은 numbertype의 부분집합임.
  • 부분집합이기 때문에 아래와 같은 계층을 이룸

  • 더 작은 타입의 값을 큰 타입에 할당하는 것은 가능함.

  • 더 큰 타입의 값을 더 작은 타입의 값에 할당하는 것은 불가능함.

업 캐스팅과 다운 캐스팅

  • 업캐스팅: 작은 타입의 값을 큰 타입에 할당하는 것
    : **모든** 상황에 가능함
  • 다운 캐스팅: 큰 타입의 값을 작은 타입에 할당하는 것
    : 대부분의 상황에 불가능함

2. unknown 타입은 전체집합이다.

  • unknown타입은 업캐스팅 경우에는 가능하지만 다운캐스팅은 불가능함. 즉 큰 집합 안에 작은 집합을 할당하는 것은 가능하나, 작은 집합 안에 큰 집합을 할당하면 논리적으로 맞지 않음.

3. never 타입은 공집합이다.

  • 모든 집합의 부분집합에 속하는 집합은? 공집합.
  • 네버 타입에는 다운캐스팅 되는 것이기 때문에 아무런 값도 저장할 수 없게 되는 것임.

4. void 타입은 undefined의 수퍼타입이기 때문에 undefined를 포괄함.

//3. void 타입 : 반환문이 없는 함수

function voidExam() {
  function voidFunc(): void {
    console.log("hi");
  }

  let voidVar: void = undefined;
}

5. any 타입은 치트키임. 그래서 타입계층도를 무시함.

  • any타입은 모든 타입의 슈퍼타입으로 위치하기도 하고, 반대로 모든 타입의 서브타입으로 위치하기도 함. 단, never만 제외함.
  • 따라서 any타입은 치트키지만 never타입으로 다운캐스팅만 할 수 없다. 알아두기
  • any타입은 타입계층도를 무시하기 때문에 쓰지 않는 것을 권장함.

타입 계층도와 타입 호환표 이해하기.

profile
곧 훌륭해질 거에요!

0개의 댓글