Skip to content

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)が存在することを保証したまま操作が可能になります。

型引数には、デフォルトの型(デフォルト値)を指定することができます。

  • 構文: <T = string>(型引数が省略された場合、デフォルトで string として扱われます)。
  • 制約との併用: extends による制約とデフォルト値の指定を同時に行うことも可能です。