interface と type(型エイリアス)は、どう使い分けますか。
interface は同じ名前で再宣言すると統合され、type は開き直せません。ユニオン型やタプルは type でしか作れません。公式は、迷ったら interface を使うよう案内しています。
面接官が見ているのは違いを事実で言えるか。好みの話で終わらせないか。
よくある答えと、面談でどう見られるか
- interface は同じ名前で再宣言すると統合される(宣言のマージ)。type は再宣言できない
公式が挙げている一番大きな違いです。ライブラリの型を拡張するときに効きます。 - type でしかユニオン型やタプルに名前を付けられない
正確です。interface はオブジェクトの形にしか使えません。 - interface の方が実行時に速い
どちらも実行時には消えます。実行速度には関係しません。 - type は古い書き方なので使わない
どちらも現役です。用途で使い分けます。
模範解答
オブジェクトの形を表すだけなら、どちらでもほぼ同じことができます。違いは2つです。
1つ目は宣言のマージです。interface は同じ名前でもう一度宣言すると、中身が統合されます。ライブラリの型にプロパティを足したいときに使えます。type は一度作ると、同じ名前で開き直せません。
2つ目は表せるものです。ユニオン型(A | B)やタプル、プリミティブの別名は type でしか作れません。
公式は、迷ったら interface を使い、type の機能が必要になったら type を使う、と案内しています。チームで揃えていればどちらでも問題ありません。
対象: TypeScript 5.x〜7.0 照合した一次資料: 公式ドキュメント 照合: 2026-10-25 最終更新: 2026-10-25
お使いの版で挙動が違う場合があります。誤りに気づいたらこの解説を報告するから教えてください。