TypeScriptにおいて、interface
はメソッドやプロパティを備える型、type
はプリミティブ型の延長的な型の定義に使う。
とはいえ、interface
の大部分の機能をtype
も持っている。どちらを使うべきか迷うケースは少なくない。
公式ドキュメントによれば、プロジェクトの初期はとりあえずinterface
を使い、各オブジェクトの役割が明確になってきたら、適宜type
を使うようにするのが無難とのことだ(意訳)。
interfaceとtypeの大きな違い
interface
とtype
の大きな違いは、型定義後に変更ができるかどうかにある。
interface
は、同名のインターフェースを定義すると自動で1つにまとめてくれる。
type
にはこうした機能がない。