Dev Study
← 解説「判別可能ユニオン」に戻る

サンプルコードで身につける: 判別可能ユニオン

解説で学んだ概念を、5つの具体例で確認します。素朴な例から実務寄りの例へと進みます。

1kind で見分ける図形の面積

各メンバーに kind というリテラル型の判別子を持たせた、判別可能ユニオンの最小例です。kind の比較だけで円か正方形かが正確に決まり、それぞれ固有のプロパティに安全にアクセスできます。

TypeScript

2判別子の名前は kind 以外でもよい

判別子は「全メンバーが共通で持つリテラル型のプロパティ」であれば、channel のような名前でも機能します。送信先の種類ごとに持つ情報が違う通知データを、1つの型で正確に表せます。

TypeScript

3switch 文で支払い方法を振り分ける

判別子の比較は if だけでなく switch 文とも相性抜群です。case ごとにそのメンバーの型へ絞り込まれ、全候補を網羅していればすべての分岐が return で終わることもコンパイラが理解してくれます。

TypeScript

4フォーム送信の4状態を1つの型で表す

入力中・送信中・完了・失敗のように、状態ごとに持つデータが違う画面の状態管理は判別可能ユニオンの主戦場です。「完了のときだけ sentAt がある」という関係を型が保証してくれます。

TypeScript

5種類の違うイベントログを集計する

クリック・スクロール・購入のように、種類ごとに持つデータが違うイベントの配列を1つの型で受けて集計します。分析基盤やトラッキング処理など、実務のイベント駆動なコードでそのまま使う形です。

TypeScript