メインコンテンツにスキップ
モジュール 7 · レッスン 2 / 2コース内の 14/14~15 min
モジュールのレッスン (2/2)

宣言とマージ

型宣言ファイル (.d.ts 拡張子付き) は、実際のロジックを実装せずに、既存の JavaScript コードの形状を記述するために TypeScript で使用されます。これらには、型定義、インターフェイス、および関数シグネチャのみが含まれます。

これらのファイルは、純粋な JavaScript で記述されたサードパーティ ライブラリを使用する場合に不可欠です。


宣言のマージ

宣言のマージ は、コンパイラが同じ名前で宣言された 2 つ以上の別々の宣言を 1 つの定義にマージする動作です。

最も一般的なケースは インターフェイス のマージです。

TS
interface User {
  name: string;
}

interface User {
  age: number;
}

// The resulting User interface has both name and age properties!
const student: User = {
  name: 'Alice',
  age: 23,
};

プロパティが同じ名前を共有する場合、それらは同じ型である必要があります。そうでない場合、TypeScript はエラーを報告します。


グローバルモジュールと外部モジュールの変更

宣言のマージを使用して、他のモジュールまたはグローバル スコープで定義されたインターフェイスを拡張できます。

たとえば、ブラウザのグローバル window オブジェクトにプロパティを追加する場合は、次のようにします。

TS
declare global {
  interface Window {
    analyticsToken: string;
  }
}

declare global を使用することで、既存のグローバル Window インターフェイスに新しい署名を挿入していることを TypeScript に伝えます。


自分で試してみてください

演習 1: 基本的な宣言のマージ

運動#ts.m7.l2.e1
試行回数: 0読み込み中…

TypeScript では、同じスコープ内の同じ名前のインターフェイスは自動的にマージされます。プロパティ名: string を使用してインターフェイス User を宣言し、次に 2 番目のブロックで同じインターフェイス User を宣言し、プロパティ age: number を追加します。最後に、適切な値を使用して User 型の定数ユーザーを宣言します。

エディターを読み込み中…
ヒントを表示

インターフェイス User を 2 回宣言し、それぞれのプロパティを挿入して、フィールドをユーザー オブジェクトに割り当てます。

3 回の試行後に解決策が利用可能になります

演習 2: グローバル ウィンドウ インターフェイスの拡張

運動#ts.m7.l2.e2
試行回数: 0読み込み中…

グローバル Window インターフェイスを拡張して、Record<string, string> タイプの config という名前のカスタム プロパティを追加するとします。新しいプロパティをグローバル Window インターフェイスにマージするには、declare global を使用して正しい宣言を記述します。

エディターを読み込み中…
ヒントを表示

使用する宣言グローバル { インターフェイス Window { config: Record<string, string>; } }。

3 回の試行後に解決策が利用可能になります