Dev Study
TypeScript コース

47. 条件型 — T extends U ? X : Y

条件型は「T が U に代入できるなら X、できないなら Y」を型のレベルで表す書き方です。三項演算子と同じ形で T extends U ? X : Y と書きます。たとえば IsString<T> を T extends string ? "yes" : "no" と定義すると、渡した型によって結果の型が切り替わります。

実務ではジェネリクスと組み合わせて「入力の型に応じて出力の型が変わる」ユーティリティ型を作るのに使います。ライブラリの型定義の根幹を支える機能で、読めるようになると複雑な型エラーの原因を追えるようになります。

つまずきポイントは extends の意味です。ここでの extends は継承ではなく「左の型が右の型に代入可能か?」という条件判定で、判定はすべてコンパイル時に行われます。実行時の if 文のように値を見て分岐するわけではありません。

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

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

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

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