まくろぐ
更新: / 作成:

2 つのインタフェースを & で結ぶと、両方のインタフェースを備えていることを示す新しい型 (交差型: Intersection type) を定義することができます。

interface Foo {
  foo(): void;
}

interface Bar {
  bar(): void;
}

// インタフェースの結合
type FooAndBar = Foo & Bar;

上記のように定義された FooAndBar インタフェースを実装するクラスは、Foo インタフェースと Bar インタフェースの両方を実装しなければいけません。

class Hoge implements FooAndBar {
  foo(): void {
    console.log('foo!!');
  }
  bar(): void {
    console.log('bar!!');
  }
}

const h = new Hoge();
h.foo();
h.bar();
☝️ 共用体は OR、交差型は AND どちらかの型になることができること示す共用体 (union) が | (OR記号)で定義されるのに対し、両方の性質を持つ交差型 (intersection type) は &(AND記号)を使って定義されます。 意味が直感的に分かりやすいですね。

関連記事

まくろぐ
サイトマップまくへのメッセージ