Menu
Coddy logo textTech

ジェネリックインターフェース

CoddyのJavaScriptジャーニー「Introduction To TypeScript」セクションの一部 — レッスン 61/73。

ジェネリック関数を作成できるのと同様に、ジェネリックインターフェースも作成できます。これにより、特定のプロパティ型を柔軟かつ再利用可能な状態に保ちながら、オブジェクトの形状を定義することができます。

同じ型パラメータ構文を使用してジェネリックインターフェースを作成する方法を以下に示します。

interface Container {
  value: T;
  isEmpty: boolean;
}

インターフェース名の後の <T> は、インターフェース定義全体で使用できる型パラメータを作成します。この例では、value プロパティはインターフェースを使用する際に指定した任意の型になりますが、isEmpty は固定された boolean 型のままです。

ジェネリックインターフェースを使用する場合、山括弧の中に具体的な型を指定します:

const stringContainer: Container = {
  value: "hello",
  isEmpty: false
};

const numberContainer: Container = {
  value: 42,
  isEmpty: false
};
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

challenge icon

チャレンジ

簡単

成功情報と共に任意の型のデータを保持できる、Result という名前のジェネリックインターフェースを作成してください。

このインターフェースは2つのプロパティを持つ必要があります:

  • boolean 型の success
  • T 型(ジェネリック型パラメータ)の data

作成したジェネリックインターフェースを使用して、以下のオブジェクトを作成してください:

  • success: true および data: "Operation completed" を持つ、Result<string> 型の stringResult
  • success: true および data: 42 を持つ、Result<number> 型の numberResult
  • success: false および data: false を持つ、Result<boolean> 型の booleanResult
  • success: true および data: ["item1", "item2", "item3"] を持つ、Result<string[]> 型の arrayResult

以下の処理を行う processResult という名前のジェネリック関数を作成してください:

  • ジェネリック型パラメータ T を使用する
  • Result<T> 型のパラメータ result を1つ受け取る
  • 文字列のメッセージを返す
  • successtrue の場合、"Success: [data]" を返す
  • successfalse の場合、"Failed: [data]" を返す

以下の出力を表示してください:

  • stringResult を引数にして processResult を呼び出した結果を表示する
  • numberResult を引数にして processResult を呼び出した結果を表示する
  • booleanResult を引数にして processResult を呼び出した結果を表示する
  • arrayResult を引数にして processResult を呼び出した結果を表示する
  • stringResult.data を表示する

チートシート

ジェネリックインターフェースを使用すると、特定のプロパティ型を柔軟かつ再利用可能に保ちながら、オブジェクトの形状を定義できます。

型パラメータの構文を使用して、ジェネリックインターフェースを作成します:

interface Container<T> {
  value: T;
  isEmpty: boolean;
}

インターフェース名の後の <T> は、インターフェースの定義全体で使用できる型パラメータを作成します。

山括弧内に具体的な型を指定して、ジェネリックインターフェースを使用します:

const stringContainer: Container<string> = {
  value: "hello",
  isEmpty: false
};

const numberContainer: Container<number> = {
  value: 42,
  isEmpty: false
};

自分で試してみよう

// TODO: ここにコードを書いてください

// ジェネリックなResultインターフェースを作成します


// Resultインターフェースを使用してオブジェクトを作成します


// ジェネリックなprocessResult関数を作成します


// 必要な出力を表示します
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

Introduction To TypeScriptのすべてのレッスン