7. 타입이 값들의 집합이라고 생각하기

ClassBinu·2024년 4월 14일

타입은 집합이다.

type A = 'A';
type B = 'B';
type Twelve = 12;

type AB = 'A' | 'B';
type AB12 = 'A' | 'B' | 12;

const a: AB = 'A'; // 가능
const ab: AB = Math.random() < 0.5 ? 'A' : 'B'; // 가능
const ab12: AB12 = ab; // 가능

타입 확장

1. & (intersection)

동등한 상태로 두 개의 타입을 결합

연산자 명칭이 교집합(intersection)인데 왜 합집합처럼 동작하나?
여기서 교집합의 의미는 인터페이스의 각각의 멤버의 교집합이 아니라,
각각의 인터페이스 자체를 모두 포함하는 성격으로서의 교집합이다.
즉, & 로 생성되는 집합은 두 인터페이스 자체가 교집합으로 모두 충족하는, 즉 각각의 멤버가 모두 포함되어야 하는 성격의 집합이다.

2. extends

상속에 초점, 부-모 관계 형성

interface PersonSpan extends Person {
  birth: Date;
  death?: Date;
}

용어 설명

아래는 모두 같은 상태이다.

  • A는 B를 상속
  • A는 B에 할당 가능
  • A는 B의 서브타입
  • A는 B의 부분 집합

타입을 집합의 관점에서 생각할 때, 각각이 멤버에 집중하지 말고 타입 자체에 집중하기

0개의 댓글