0Pricing
TypeScript Academy · レッスン

ジェネリクス

ジェネリクスを使って再利用可能なコンポーネントを作成する方法を学びます

「ジェネリクス」はCoddyKit上の無料TypeScript Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはTypeScript Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 TypeScript Academyコースには全4レッスンが含まれています。

ジェネリクス入門

ジェネリクス

次のレッスンへようこそ!このレッスンでは、再利用可能で型安全なコンポーネントを作成できる TypeScript の強力な機能、ジェネリクスについて学びます。さっそく始めましょう!

ジェネリクス — イラスト1

ジェネリクスとは

ジェネリクスとは

ジェネリクスを使うと、任意の型で動作する再利用可能なコードを記述できます。ジェネリクスは、使用時に指定できる型のプレースホルダーとして機能します。

例: ジェネリック関数:

課題: 引数を受け取り、変更せずにそのまま返すジェネリック関数を作成してください。

function identity<T>(value: T): T {
  return value;
}

console.log(identity<string>("Hello")); 
// Output: Hello
console.log(identity<number>(42)); 
// Output: 42

ジェネリクスを使用する理由

ジェネリクスを使用する理由

ジェネリクスを使うと、次のことができます:

  • 再利用可能なコードを書く: 関数やクラスを異なる型で使用できます。
  • 型安全性を確保する: 柔軟性を損なわずに特定の型を強制できます。
  • 冗長性を減らす: 異なる型ごとに同じ関数やクラスの別バージョンを書く必要がなくなります。

ヒント: より柔軟で保守しやすいコードを書くには、ジェネリクスを使用してください。

ジェネリック関数

ジェネリック関数

ジェネリクスを使って柔軟な関数を作成できます。例:

課題: 2つのオブジェクトをマージして結果を返すジェネリック関数を作成してください。

function merge<T, U>(obj1: T, obj2: U): T & U {
  return { ...obj1, ...obj2 };
}

let merged = merge({ name: "Alice" }, { age: 25 });
console.log(merged); 
// Output: { name: "Alice", age: 25 }

ジェネリッククラス

ジェネリッククラス

クラスでジェネリクスを使用すると、異なる型で再利用できるようになります。例:

class Box<T> {
  private contents: T;

  constructor(contents: T) {
    this.contents = contents;
  }

  getContents(): T {
    return this.contents;
  }
}

let stringBox = new Box<string>("Hello");
console.log(stringBox.getContents()); 
// Output: Hello

let numberBox = new Box<number>(42);
console.log(numberBox.getContents()); 
// Output: 42

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

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

インターフェースでもジェネリクスを使用して、異なる型に対する構造を強制できます。例:

課題: ジェネリックインターフェースを定義し、それを実装するオブジェクトを作成してください。

interface Pair<T, U> {
  first: T;
  second: U;
}

let coordinates: Pair<number, number> = { first: 10, second: 20 };
console.log(coordinates); 
// Output: { first: 10, second: 20 }

ジェネリック制約

ジェネリック制約

ジェネリクスに制約を追加すると、特定の型でのみ動作するようにできます。例:

function printLength<T extends { length: number }>(item: T): void {
  console.log(`Length: ${item.length}`);
}

printLength("Hello"); 
// Output: Length: 5
printLength([1, 2, 3]); 
// Output: Length: 3
// printLength(42); 
// Error: Argument of type 'number' is not assignable to parameter of type '{ length: number }'.

ジェネリックのデフォルト値

ジェネリックのデフォルト値

型が指定されない場合に使用するデフォルトの型を、ジェネリクスに指定できます。例:

課題: デフォルトの型を持つジェネリック関数を作成し、異なる型でテストしてください。

function wrap<T = string>(value: T): T[] {
  return [value];
}

console.log(wrap("Hello")); // Output: ["Hello"]
console.log(wrap(42)); // Output: [42]

よくできました!

よくできました!

おめでとうございます!TypeScript でジェネリクスを使用して、再利用可能で型安全な関数、クラス、インターフェースを作成する方法を学びました。ジェネリクスは、柔軟でスケーラブルなコードを書くための強力なツールです。次のレッスンでは、マップ型や条件付き型などの高度な型について学びます。この調子でコーディングを続けましょう!

ジェネリクス — イラスト10

よくある質問

「ジェネリクス」レッスンは無料ですか?

はい。「ジェネリクス」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、TypeScript Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 TypeScript Academyコースには全4レッスンが含まれています。

「ジェネリクス」で何を学びますか?

ジェネリクスを使って再利用可能なコンポーネントを作成する方法を学びます ブラウザで直接実行するハンズオンコードでTypeScript Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

TypeScript Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのTypeScript Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「ジェネリクス」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このTypeScript Academyレッスンでコードを書いて実行できますか?

はい。すべてのTypeScript Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. ジェネリクス
  2. 型エイリアスとインターフェース
  3. ユーティリティ型
  4. 型ガード
← TypeScript Academyに戻る