← TypeScript コース
25. ジェネリック制約 extends
型引数に extends を付けると「T は最低限この形を持つ型」という条件を課せます。<T extends { length: number }> と書けば、T は length プロパティを持つ型に限定されます。
制約がないと、関数の中では T の値に対して何の操作もできません。「比較に length を使いたい」「id プロパティを読みたい」など、中で使うプロパティがあるときに制約を付けるのが実務での使いどころです。
「どんな型でも受け入れる柔軟さ」と「中で安全に操作できる保証」のバランスを取る機能だと捉えましょう。制約を満たさない型で呼ぶと、呼び出した行でエラーになります。
▶ サンプルコードを実行してみよう(自由に書き換えてOK)
TypeScript