本文へスキップ
BecomeCoder

TypeScriptコース · 第5章 ジェネリクス · レッスン17

ジェネリックな型・interface

ブラウザで完結

導入

「箱」のように、中身の型を問わずに使い回せる型を作りたいことがあります。interfacetype にも <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> 型の変数を作り、valuetrue を入れて console.log() で表示してみましょう。

演習

interface Pair<T> { first: T; second: T; } を作ってください。Pair<number> 型の変数 pfirst: 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);

実際に動かしてみよう

下のエディタにTypeScriptを書いて「実行」を押すと、その場でJavaScriptに変換してブラウザ内で実行し、出力が表示されます。本文の例をそのまま試したり、型注釈を書き換えたりしてみましょう(console.log の結果が下に出ます。初回だけコンパイラの読み込みに少し時間がかかります)。

TypeScript — ブラウザ内で実行

TypeScriptコンパイラ(同梱)でTS→JSに変換してから実行する学習用環境を読み込みます(初回のみコンパイラの読み込みに少し時間がかかります)。
スクロールして表示された時点でも自動で読み込まれます。