今回は、TypeScriptのジェネリクスについてお話しします。ジェネリクスは、プログラムをより安全で柔軟にするための強力なツールです。特に型安全性を重視するTypeScriptでは、とても大切な考え方です。
ジェネリクスは、型を引数として受け取ることができる仕組みです。簡単に言うと、どんな型にも対応できる関数やクラスを作ることができるということです。このことによって、より再利用性の高いコードを書くことができます。
まずは、ジェネリクスを使った関数の例を見てみましょう。
function identity<T>(arg: T): T {
return arg;
}
この関数は、どんな型の引数でも受け取ることができます。型パラメータ
const stringResult = identity("Hello, TypeScript!"); // string
const numberResult = identity(42); // number
ジェネリクスは、クラスでも利用することができます。以下は、ジェネリクスを使ったクラスの例です。
class Box<T> {
private content: T;
constructor(content: T) {
this.content = content;
}
public getContent(): T {
return this.content;
}
}
このBoxクラスは、どんな型のオブジェクトでも格納できる箱を作ります。使用例は次の通りです。
const stringBox = new Box("Hello");
const numberBox = new Box(10);
console.log(stringBox.getContent()); // Hello
console.log(numberBox.getContent()); // 10
ジェネリクスを使うことで、いくつかのメリットがあります。
ジェネリクスを使うことで、型のチェックをコンパイル時に行うことができるため、実行時エラーを減らすことができます。これによって、バグを未然に防ぐことが可能です。
同じ処理を異なる型に対して行う場合、一般的な関数やクラスを作ることができるため、コードを無駄に繰り返さなくて済みます。
今回は、TypeScriptのジェネリクスについて基本的な使い方やメリットをご紹介しました。ジェネリクスを使うことで、より型安全で再利用性の高いコードを書くことができます。