Dev Study
TypeScript コース

29. 型述語 is — 自作の型ガード

型述語は、自作の関数を絞り込みに使えるようにする仕組みです。関数の戻り値の型の位置に pet is Fish と書くと「この関数が true を返したら pet は Fish 型」とコンパイラに伝わり、if 文でその関数を呼ぶだけで型が絞り込まれます。

実務で特に効くのが配列の filter との組み合わせです。普通の boolean を返す関数で filter しても要素の型はユニオンのままですが、型述語付きの関数を渡すと、結果の配列が Fish[] のように絞り込まれた型になります。判定ロジックに名前を付けて使い回せるのも利点です。

つまずきポイントは、判定の中身が正しいかまではコンパイラが保証しないことです。条件を書き間違えていても宣言どおりに絞り込まれてしまうため、「自分が正しさを保証する」書き方だと意識して、判定条件は慎重に書きましょう。

▶ サンプルコードを実行してみよう(自由に書き換えてOK)

TypeScript
サンプルコードで身につける(5本) →

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

公式ドキュメントで詳しく ↗