유니온은 후보를 모으고, 인터섹션은 조건을 겹친다

기호는 비슷한 조합처럼 보여도 값이 통과해야 하는 규칙은 정반대다.

후보 중 하나

UNION
Success|Error
값은 한 경로로 들어온다공통 멤버만 바로 쓰고 status·typeof 같은 검사로 좁힌다.
type ApiResult = Success | Error;

조건을 모두 충족

INTERSECTION
User&Privileges
한 값이 양쪽 책임을 가진다모든 필수 멤버가 필요하며 같은 속성의 타입이 충돌하면 never가 된다.
type AdminUser = User & Privileges;
여러 상태 중 하나인가?

성공/실패, 로딩/완료처럼 런타임에서 갈라지면 유니온과 식별 필드를 쓴다.

여러 능력이 동시에 필요한가?

사용자 정보와 관리자 권한처럼 한 객체에 모두 필요하면 인터섹션을 쓴다.