-
(TypeScript) - 타입은 집합이다 (슈퍼타입, 서브타입, 업캐스팅, 다운캐스팅)개발/TypeScript 2025. 8. 19. 16:43반응형
■ 타입은 집합이다
집합 : 동일한 속성을 갖는 원소들을 모아둔 것
즉, 동일한 속성과 특징을 갖는 여러 개의 값을 갖는 것을 말한다.

사진은 20만 담을 수 있는 넘버 리터럴 타입의 아주 작은 집합이다.

근데 이 20이란 숫자는 number 타입도 될 수 있다.
따라서 넘버 리터럴 타입은 넘버 타입의 부분 집합이 되는데,
여기서 다른 타입을 포함하는 타입을 슈퍼타입(부모 타입) 이라고 한다.
반대로 다른 타입에 포함되는 타입을 서브타입(자식타입) 이라고 한다.


이를 계층 구조로 바라보면 다음과 같고,
이는 이전에 우리가 타입 스크립트 타입 관계를 계층 구조로 바라봤던 사진과 동일하다.
결국 타입스크립트가 말하는 타입이라는 것은 결국 값들을 포함하고 있는 집합이며,
그렇기 때문에 서로 타입들끼리 부모와 자식 관계를 맺으며 모든 타입들의 관계를 놓고 보면
타입 계층도로 만들어서 표현할 수 있는 것이다.
■ 타입 호환성

: 어떤 타입을 다른 타입으로 취급해도 괜찮은지 판단하는 것
우리가 이런 계층 구조를 알고 있다면 타입 호환성도 이해할 수 있게 되는 것이다.

더 작은 집합인 리터럴 타입이 넘버 타입에 들어가는 것은 문제가 없지만,
더 큰 타입 집합인 number 를 더 작은 집합인 넘버 리터럴 타입에 넣으려 하면 오류가 발생한다.

이렇게 슈퍼타입이 서브타입에 포함되는 상황을 다운캐스팅이라 하는데 이는 대부분 상황에서 불가능하다.
서브타입이 슈퍼타입에 포함되는 상황인 업캐스팅은 모든 상황에 가능하다.
반응형'개발 > TypeScript' 카테고리의 다른 글
(TypeScript) - 객체 타입 호환성 (0) 2025.08.20 (TypeScript) - 타입 계층 구조로 기본 타입 정리 (0) 2025.08.20 (TypeScript) - TypeScript void 와 never 타입 (0) 2025.08.19 (TypeScript) - Any 타입과 Unknown 타입 (0) 2025.08.19 (TypeScript) - TypeScript Enum 타입 (0) 2025.08.19