TypeScriptは、JavaScriptに静的型付けを導入することで、開発者に強力な型安全性を提供します。その中でも、ジェネリック型は特に汎用性が高く、柔軟性を持ったコーディングを可能にします。
ジェネリック型とは
ジェネリック型は、型や関数をパラメータ化する手段として導入されました。これにより、同じコードを異なる型に対して再利用することができます。例えば、配列のソート関数を考えてみましょう。
function sort<T>(array: T[]): T[] {
return array.sort();
}
この例では、T
は型パラメータであり、sort
関数はどんな型の配列にも対応できます。具体的な型は関数呼び出し時に指定されます。
ジェネリック型の利点
-
型安全性の向上
ジェネリック型を使用することで、コンパイル時に型エラーを検知しやすくなります。型の不整合があれば、コンパイルエラーが発生し、実行前に問題を解決できます。
typescript
const result = sort([1, 3, "2"]); // Error: Argument of type '(string | number)[]' is not assignable to parameter of type 'number[]'.
-
コードの再利用
ジェネリック型を使用することで、同じロジックを持つ関数やクラスを異なる型に対して再利用できます。これにより、冗長なコードの削減が可能です。
“`typescript
class Box
private value: T;
constructor(value: T) {
this.value = value;
}
getValue(): T {
return this.value;
}
}
“`
ジェネリック型の実用例
ジェネリック型は、様々な場面で活用されています。例えば、PromiseやArrayなどの組み込み型もジェネリック型を利用しています。これにより、Promiseの戻り値やArrayの要素に対する型を柔軟に指定できます。
const promise: Promise<number> = new Promise((resolve) => resolve(42));
const numbers: Array<number> = [1, 2, 3];
まとめ
TypeScriptのジェネリック型は、型安全性とコードの再利用性を向上させる重要な概念です。柔軟で強力な型付けを利用することで、開発者はより安全でメンテナブルなコードを記述できます。ジェネリック型を活用して、より洗練されたTypeScriptコードを作成しましょう。