Discriminated union(태그된 union)은 모두가 공통의 리터럴 필드(판별자, discriminant)를 공유하는 객체 타입들의 union으로, 컴파일러는 이를 사용해 변형들을 구분하고 안전하게 narrowing합니다.
ts
type Result =
| { status: "loading" }
| { status: "success"; data: string }
| { status: "error"; message: string };
모든 멤버는 리터럴을 가집니다. 이를 검사하면 정확히 하나의 변형으로 narrowing되어 그 변형의 필드가 열립니다:
