【かたのしぼりこみ】
型の絞り込み とは?
💡 if文ひとつで、曖昧な型がピンポイントに変わる魔法
📌 このページのポイント
- typeof や instanceof などの条件チェックで、変数の型を具体的に絞り込める
- TypeScriptではユニオン型を安全に扱うための必須テクニック
- カスタム型ガード関数を作ることで、独自の絞り込みロジックも定義できる
- 判別共用体と組み合わせると、網羅性チェックも自動で行える
型の絞り込みってどういうときに使うの?
たとえば string | number というユニオン型の変数があるとき、typeof で string かどうか調べると、そのブロック内では string 型として扱えるようになるんだよ
コンパイラがそこまで理解してくれるんだね!
そうだよ。TypeScriptのコンパイラは制御フロー解析をしていて、if文やswitch文の分岐に応じて型を自動的に絞り込んでくれるんだ
自分で絞り込みのルールを作ることもできるの?
できるよ。TypeScriptでは is キーワードを使った型ガード関数を定義できる。たとえば function isString(x: unknown): x is string みたいに書くんだ
絞り込みをサボるとどうなるの?
まとめ:ざっくりこれだけ覚えればOK!
「型の絞り込み」って出てきたら「条件分岐で型を具体的に特定するテクニック」と思えればだいたいOK!
📖 おまけ:英語の意味
「Type Narrowing」 = 型の絞り込み
💬 Narrow は「狭める」という意味で、広い型を狭い型に絞り込んでいくイメージだよ