Union vs Intersection

모델링 기준과 타입 연산자

값이 여러 상태 중 하나로 바뀌면 유니온을, 한 값이 여러 능력을 동시에 가져야 하면 인터섹션을 선택합니다.

상태 분기

API 응답은 성공 또는 오류입니다

type ApiResponse = Success | Error

호출자는 아직 두 응답 중 어느 쪽인지 모릅니다.

response.status === "success"

식별 속성을 검사하면 data 또는 message 접근 범위가 좁혀집니다.

능력 조합

관리자 사용자는 두 계약을 모두 만족합니다

type SuperUser = User & AdminPrivileges

id와 email뿐 아니라 관리 메서드까지 모두 필요합니다.

sameKey: string & number

같은 키의 타입이 충돌하면 사용할 수 없는 never로 수렴합니다.

값의 형태가 갈라짐

성공 응답과 오류 응답처럼 런타임 상태가 하나만 선택됩니다.

검사 후 접근

유니온은 공통 멤버만 바로 쓰고, 분기 후 고유 멤버를 사용합니다.

필수 멤버가 합쳐짐

인터섹션은 빠진 속성이 있으면 객체 전체가 계약을 만족하지 못합니다.