0Pricing
TypeScript Academy · レッスン

Interfaceの拡張とマージ

Interfaceを拡張し、宣言マージの仕組みを理解します。

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

ようこそ

インターフェースは他のインターフェースを拡張して既存の形状を基盤にでき、TypeScriptは同じインターフェースに対する複数の宣言を自動的にマージします。

インターフェースの拡張

`extends`キーワードを使用すると、親のすべてのプロパティを含む新しいインターフェースを作成できます。
interface Animal { name: string; }
interface Dog extends Animal {
  breed: string;
}
const rex: Dog = { name: 'Rex', breed: 'Labrador' };

複数のインターフェースの拡張

インターフェースは複数のインターフェースを一度に拡張し、それらのすべてのプロパティを組み合わせることができます。
interface Flyable { fly(): void; }
interface Swimmable { swim(): void; }
interface Duck extends Flyable, Swimmable {
  quack(): void;
}

拡張時のプロパティのオーバーライド

拡張したインターフェースでは親のプロパティをオーバーライドできますが、新しい型は親の型に代入可能でなければなりません。
interface Base { value: string | number; }
interface Derived extends Base { value: string; } // OK — string is narrower
// interface Bad extends Base { value: boolean; } // Error

宣言のマージ

同じ名前のインターフェースを2つ宣言すると、TypeScriptはそれらをすべてのプロパティを持つ1つのインターフェースにマージします。
interface Window { title: string; }
interface Window { location: Location; }
// Merged: Window has both title and location

ライブラリ型の拡張

宣言のマージは、サードパーティの型を拡張するために使用されます。たとえば、ExpressのRequestインターフェースにプロパティを追加できます。
// express.d.ts
declare namespace Express {
  interface Request {
    user?: User;
  }
}

型エイリアスのインターフェースによる拡張

型エイリアスがオブジェクト型であれば、インターフェースでその型エイリアスを拡張できます。
type Named = { name: string };
interface User extends Named { email: string; }

入れ子になった拡張チェーン

拡張チェーンは複数の階層にわたって構成できます。
interface A { a: number; }
interface B extends A { b: number; }
interface C extends B { c: number; }
const obj: C = { a: 1, b: 2, c: 3 };

extendsとimplements

`extends`はインターフェース間またはクラス間の継承に使用します。`implements`はクラスがインターフェースの契約を満たすために使用します。
interface Serializable { serialize(): string; }
class Model implements Serializable {
  serialize() { return JSON.stringify(this); }
}

マージによるすべての利用箇所への追加

インターフェースがマージされると、そのインターフェースを使用している既存のコードすべてに新しいプロパティが自動的に追加されます。これがライブラリの拡張が機能する理由です。

マージと拡張:使い分け

既存のインターフェースを基に新しいインターフェースを作成するには`extends`を使用します。別のファイルからインターフェースに追加する場合(拡張など)は、マージ(同じ名前)を使用します。

確認問題

サードパーティライブラリのインターフェースにプロパティを追加できるTypeScriptの機能はどれですか。

まとめ

インターフェースは`extends`で他のインターフェースを拡張し、それらの形状を組み合わせます。宣言のマージでは、同じ名前のインターフェースが自動的に組み合わされます。これにより、サードパーティのコードを変更せずにライブラリを拡張できます。

よくある質問

「Interfaceの拡張とマージ」レッスンは無料ですか?

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

「Interfaceの拡張とマージ」で何を学びますか?

Interfaceを拡張し、宣言マージの仕組みを理解します。 ブラウザで直接実行するハンズオンコードでTypeScript Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「Interfaceの拡張とマージ」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

  1. Interfaceによるオブジェクト形状の定義
  2. 複雑な型のための型エイリアス
  3. Interfaceの拡張とマージ
  4. InterfaceとType:使い分け
← TypeScript Academyに戻る