導入
「箱」のように、中身の型を問わずに使い回せる型を作りたいことがあります。interface や type にも <T> を付けてジェネリックにできます。
説明
interface にジェネリクスを付けると、中身の型を使う側が決められる「入れ物」の型になります。
interface Box<T> {
value: T;
}
const numberBox: Box<number> = { value: 100 };
const stringBox: Box<string> = { value: "hello" };
console.log(numberBox.value, stringBox.value);
実は第3章で使った配列の型 number[] は、組み込みのジェネリック型 Array<T> の別の書き方です。
let list: Array<number> = [1, 2, 3]; // number[] と同じ意味
console.log(list);
やってみよう
Box<boolean> 型の変数を作り、value に true を入れて console.log() で表示してみましょう。
演習
interface Pair<T> { first: T; second: T; } を作ってください。Pair<number> 型の変数 p に first: 1, second: 2 を入れ、console.log(p.first + p.second) で合計を表示してください。
ヒント1を見る
interface Pair<T> { first: T; second: T; } と書きます。
ヒント2を見る
const p: Pair<number> = { first: 1, second: 2 }; console.log(p.first + p.second);