TypeScript のインタフェースは、あるインスタンスがどのようなプロパティ、メソッドを持っているかの仕様を定義します。
プロパティを定義する
次の例では、2 つのプロパティ x
、y
を持つインタフェース Point
を定義しています。
このインタフェースを使って、次のようにオブジェクトを生成することができます。 オブジェクトを生成するときには、インタフェースで定義されているすべてのプロパティに値を設定してやる必要があります。
Java などと異なり、TypeScript ではインタフェース定義さえあれば、上記のようにその型のオブジェクトを生成することができます(Java では厳密にはクラス定義がないとオブジェクトを生成できません)。
そのため、TypeScript では、interface
キーワードを使ったインタフェース定義の頻度が高くなります。
TypeScript のインタフェースは、拡張に対してオープンであり、次のように後付けでプロパティを追加することができます。
メソッドを定義する
インタフェースでは、オブジェクトが持つべきメソッドを定義することができます。
次の Product
インタフェースは、2 つのプロパティ name
、price
の他に、1 つのメソッド calcTotal()
を持つ型を示しています。
この Product
型のオブジェクトを生成するには次のようにします。
プロパティの値だけではなく、メソッドの実装もこのタイミングで渡す必要があります。
もっとも、オブジェクト生成時に上記のように毎回メソッドの実装を渡していては大変なので、このような場合は、通常はクラス定義を使用します。
- 参考: クラス定義の基本 (class)