インターフェイス

宣言

このエントリーをはてなブックマークに追加
最終更新日 2016-12-31

次に示すのは、インターフェイス宣言の書式です。

interface インターフェイス名 {
    メンバ変数名: メンバ変数の型名;
    メンバ関数名(引数名: 引数の型名): 戻り値の型名;
}

インターフェイスは継承をサポートします。 インターフェイスを継承するためにはキーワード extends を使用します。

interface Foo {
    foo(): void;
}

interface Bar extends Foo {
    bar(): void;
}

上記の例では、インターフェイス Bar はインターフェイス Foo を継承します。 基底インターフェイスはカンマで区切ることで複数指定できます。

interface Foo1 {
    foo1(): void;
}

interface Foo2 {
    foo2(): void;
}

interface Bar extends Foo1, Foo2 {
    bar(): void;
}

マージ

同じ名前のインターフェイスを宣言した場合は、それぞれのメンバがマージされます。

interface Foo {
    x: string;
}

interface Foo {
    y: string;
    z(): void;
}

上記のインターフェイス Foo は、次のコードと同等です。

interface Foo {
    x: string;
    y: string;
    z(): void;
}

同じ名前のメンバ関数を含む場合は、オーバーロードとみなされます。

interface Foo {
    z(): void;
}

interface Foo {
    z(x: string): string;
}

ただし、メンバ変数と同じ名前のメンバが含まれる場合はコンパイルエラーになります。

interface Foo {
    x: string;
}

// 型が異なるが、メンバ変数 x と同じ名前なのでコンパイルエラー
interface Foo {
    x: number;
}

// メンバ関数だが、メンバ変数 x と同じ名前なのでコンパイルエラー
interface Foo {
    x(): string;
}