type combine
유니온은 선택지를, 인터섹션은 조합을 표현한다
둘 다 타입을 합치는 문법이지만 유니온은 가능한 경우 중 하나, 인터섹션은 여러 조건을 동시에 만족하는 값입니다.
Union = OR, Intersection = AND
값의 가능성과 객체의 책임을 분리해서 읽습니다.
선택지: 여러 형태 중 하나
Loading
{ status: "loading" }
OR
Success
{ status: "success"; data }
사용 지점에서는 status, kind 같은 구분 필드로 현재 선택지를 좁힙니다.
조합: 여러 조건을 동시에 만족
BaseUser
{ id: string; name: string }
AND
AdminRole
{ role: "admin"; permissions: string[] }
결과 값은 두 타입의 속성을 모두 가져야 하며, 하나라도 빠지면 맞지 않습니다.
선택지가 바뀌는 값
type Result = Loading | Success | Error
분기마다 가능한 필드가 달라지는 API 상태에 적합합니다.
책임이 더해지는 값
type Admin = User & Auditable & Role
한 객체가 여러 책임을 동시에 가져야 할 때 적합합니다.