type combine

유니온은 선택지를, 인터섹션은 조합을 표현한다

둘 다 타입을 합치는 문법이지만 유니온은 가능한 경우 중 하나, 인터섹션은 여러 조건을 동시에 만족하는 값입니다.

Union = OR, Intersection = AND 값의 가능성과 객체의 책임을 분리해서 읽습니다.
union

선택지: 여러 형태 중 하나

Loading { status: "loading" }
OR
Success { status: "success"; data }

사용 지점에서는 status, kind 같은 구분 필드로 현재 선택지를 좁힙니다.

intersection

조합: 여러 조건을 동시에 만족

BaseUser { id: string; name: string }
AND
AdminRole { role: "admin"; permissions: string[] }

결과 값은 두 타입의 속성을 모두 가져야 하며, 하나라도 빠지면 맞지 않습니다.

선택지가 바뀌는 값 type Result = Loading | Success | Error 분기마다 가능한 필드가 달라지는 API 상태에 적합합니다.
책임이 더해지는 값 type Admin = User & Auditable & Role 한 객체가 여러 책임을 동시에 가져야 할 때 적합합니다.