1.7 TypeScriptのジェネリクスについて
前回、TypeScriptの高度な型について学びました。今回は、TypeScriptのジェネリクスについて詳しく見ていきましょう。
1.7.1 ジェネリクスとはジェネリクスは、型の再利用性を高めるための機能です。ジェネリクスを使用すると、異なる型で動作する一連の関数やクラスを一つにまとめることができます。
1.7.2 ジェネリクスの基本的な使用方法ジェネリクスは、関数やクラスの定義時に型パラメータを指定することで使用します。型パラメータは、通常大文字のT
を使って表します。
function getArray<T>(items : T[] ) : T[] {
return new Array<T>().concat(items);
}
let numArray = getArray<number>([1, 2, 3, 4]);
let strArray = getArray<string>(["hello", "world"]);
上記のコードでは、getArray
関数はジェネリクスを使用しており、任意の型T
の配列を受け取り、同じ型T
の配列を返します。getArray
関数を呼び出す際には、具体的な型(この場合はnumber
とstring
)を指定します。
ジェネリクスは非常に柔軟な機能ですが、あまりにも自由度が高すぎると型安全性が損なわれる可能性があります。そのため、TypeScriptではジェネリクスに制約を設けることができます。
interface Lengthwise {
length: number;
}
function loggingIdentity<T extends Lengthwise>(arg: T): T {
console.log(arg.length);
return arg;
}
上記のコードでは、loggingIdentity
関数はLengthwise
インターフェースを満たす型T
のみを受け入れます。
以上が、TypeScriptのジェネリクスについての基本的な説明です。次回は、TypeScriptの高度なジェネリクスについて学んでいきましょう。