Modeling
상태 분기는 Union, 능력 조합은 Intersection으로 모델링한다
런타임에서 하나의 상태만 선택되면 union을, 한 객체가 여러 역할을 동시에 가져야 하면 intersection을 쓴다.
| 질문 | 판정 |
|---|---|
| 성공 또는 오류처럼 갈라지는가? | Success | Error 같은 discriminated union |
| 검사 후 다른 속성을 써야 하나? | status 같은 식별 속성으로 좁힘 |
| 한 객체가 여러 능력을 가져야 하나? | User & AdminPrivileges처럼 요구를 합침 |
| 같은 키 타입이 충돌하나? | string & number는 never로 수렴 |
| 기준 | 해석 |
|---|---|
| API 응답 | 상태 분기 → union |
| 관리자 사용자 | 역할 조합 → intersection |
| 안전 기준 | 분기 조건과 조합 요구를 코드에 남김 |
핵심 유니온은 선택된 상태를 찾는 문제이고, 인터섹션은 요구 조건을 모두 만족시키는 문제다.