Dev Study
← 解説「ジェネリック関数」に戻る

サンプルコードで身につける: ジェネリック関数

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

1値をそのまま返す identity 関数

型引数 T の最も素朴な形です。呼び出すたびに渡した値の型が T に決まり、戻り値も同じ型になるので、any を使わずに「何でも受け取って同じ型で返す」関数が書けます。

TypeScript

2配列の最後の要素を返す

「要素の型は何でもよいが、入力の配列と戻り値の型はそろえたい」というジェネリクスの典型例です。空配列の可能性を T | undefined というユニオン型の戻り値で正直に表現しています。

TypeScript

3型引数2つでペアを作る

型引数は T 1つとは限らず、カンマで区切って複数持てます。2つの値の組をタプル型 [A, B] で返すことで、それぞれの位置の型情報が呼び出し側まで正確に伝わることを確かめます。

TypeScript

4型引数を明示して呼び出す

T は通常引数の値から推論されますが、空配列を作るときのように推論の材料がない場合は、関数名の後ろに <string> と明示します。初期データのない一覧を準備する実務の場面でよく出てくる書き方です。

TypeScript

5変換用コールバックを受け取る汎用関数

入力の型 T と出力の型 U を分けると、map のような「配列を別の型の配列に変換する」汎用処理を自作できます。ライブラリの関数の型定義はほぼこの形をしており、実務で型定義を読むときの基礎になります。

TypeScript