3.4 型引数を持つ型
TypeScriptでは、型そのものをパラメータ化して再利用性を高める 型引数(type parameters) 、いわゆるジェネリクスを使用できます。
3.4.1 型引数を持つ型を宣言する
Section titled “3.4.1 型引数を持つ型を宣言する”型引数を持つ型(ジェネリック型)を宣言する際は、型名の後ろに <T> のように山括弧で識別子を記述します。
- スコープ: 宣言された型引数(例:
T)は、その型定義の内部でのみ有効な型名として扱われます。 - 複数指定: カンマ区切りで複数の型引数を並べることも可能です。
3.4.2 型引数を持つ型を使用する
Section titled “3.4.2 型引数を持つ型を使用する”型引数を持つ型を利用する際は、具体的な型を渡して型を完成させます。
- 指定方法:
Family<number, string>のように、定義された引数の数だけ具体的な型を渡します。 - 型推論: 状況によっては、TypeScriptが文脈から型引数を自動的に推論することもあります。
3.4.3 部分型関係による型引数の制約
Section titled “3.4.3 部分型関係による型引数の制約”extends キーワードを使用することで、型引数に渡せる型に制約を設けることができます。
- 構文:
<T extends HasName>(Tは必ずHasNameの部分型でなければならないことを示します)。 - 安全性: 制約を付けることで、型引数
Tを持つオブジェクトに対して、特定のプロパティ(例:name)が存在することを保証したまま操作が可能になります。
3.4.4 オプショナルな型引数
Section titled “3.4.4 オプショナルな型引数”型引数には、デフォルトの型(デフォルト値)を指定することができます。
- 構文:
<T = string>(型引数が省略された場合、デフォルトでstringとして扱われます)。 - 制約との併用:
extendsによる制約とデフォルト値の指定を同時に行うことも可能です。