判別可能なユニオン(タグ付きユニオン) は、すべてが共通のリテラルフィールド(判別子)を持つオブジェクト型のユニオンです。コンパイラはこの判別子を使ってバリアントを区別し、安全に絞り込みます。
ts
type Result =
| { status: "loading" }
| { status: "success"; data: string }
| { status: "error"; message: string };
すべてのメンバーが リテラルを持っています。それをチェックするとちょうど1つのバリアントに絞り込まれ、そのバリアントのフィールドが利用可能になります。
