타입은 값들의 집합이다
작성 수정
-
타입은 변수가 가질 수 있는 값들의 모음, 값들의 집합이다
-
런타임에서 변수는 이 타입에 속하는 값들 중 하나를 실제로 가진다
-
타입의 범위는 할당 가능한 값들의 집합이다
-
타입을 값의 집합이라고 생각하면 이해하기 수월하다.
-
이 집합은 무한하거나, 유한하다. boolean/literal 타입, number/string
-
TS는 엄격한 상속 관계가 아니라 겹쳐지는 집합으로 표현된다.
집합 크기에 따라 나눠보자
1. never`
- 공집합, 아무런 값도 할당할 수 없음
2. 유닛 타입, 리터럴 타입
- 한 가지 값만 포함
type A = 'a'
type Twelve = 12;
3. 유니온 타입
- 합집합, 두 개 혹은 세 개로 묶을 때
type AB = 'A' | 'B'
type AB12 = 'A' | 'B' | 12
4. 인터섹션 타입
인터섹션에서의 차이점
- 타입은 값들의 집합이지만, 인터섹션 타입은 두 타입 모두의 요구사항을 만족하는 값들의 집합으로 해석해야 합니다.
- 인터섹션 타입은 단순히 공통된 속성만을 요구하는 것이 아니라, 두 타입에 있는 모든 속성을 만족해야 하는 타입입니다. x
interface A {
name: string;
}
interface B {
age: number;
}
type AandB = A & B;
const person: AandB = {
name: "Alice",
age: 25
};
extends
- A는 B를 상속한다. A는 B에 할당 가능하다. A는 B의 서브타입이다. A는 B의 부분집합이다. 모두 같은 뜻이다.
- ~의 부분집합, ~의 서브타입
interface Vector1D { x: number; }
interface Vector2D extends Vector1D { y: number; }
interface Vector3D extends Vector2D { z: number; }
graph TD;
subgraph Vector1D["Vector1D"]
subgraph Vector2D["Vector2D"]
subgraph Vector3D["Vector3D"]
end
end
end