プログラミングの用語一覧へ
このページの目次

interface / typeとは?

最終更新:2026/08/18

3秒でわかる

TypeScriptに名前を付ける 2 つの構文。後から拡張したい型は interface、ユニオン型など型そのものの別名には type を使います。

もう少し詳しく

どういうものか

interfacetype はどちらも TypeScript で型に名前を付ける構文です。オブジェクトの形を書く用途ではほぼ同じことができ、どちらで書いてもエディタの補完もエラー検出も変わりません。違いが出るのは、後から拡張するとき、オブジェクト以外の型を表したいとき、そしてエラーメッセージの読みやすさです。

なぜ必要か

同じ形のオブジェクトを何箇所でも扱うとき、毎回インラインで型を書くと修正漏れが起きます。名前を付けておけば定義は 1 箇所で済みます。加えて type はユニオン型やタプル、条件型といった「オブジェクトではない型」にも名前を付けられるため、状態の取りうる値を型で表現する用途では欠かせません。

具体例

interface User { id: number; name: string; } interface User { email: string; } // 宣言<a href="/glossary/merge-2" class="text-primary font-medium underline underline-offset-2 hover:text-primary-dark">マージ</a>により User は id / name / email を持つ type Status = "idle" | "loading" | "done"; type Result = { status: Status; user: User } | { status: "error"; message: string }; function render(r: Result) { if (r.status === "error") return r.message; return r.user.name; }

つまずきやすいところ

  • type は同じ名前で 2 回宣言すると重複エラーになる。interface は静かにマージされるので、意図しない拡張に気付きにくい

  • ユニオン型を interface で書こうとして詰まる。interface はオブジェクトの形しか書けない

  • 継承の書き方が違う。interfaceextendstype& によるインターセクション

  • ライブラリの型を後から足したいときは interface の宣言マージしか手が無い
  • 似た用語との違い

    観点interfacetype
    オブジェクトの形書ける書ける
    ユニオン型書けない書ける
    同名の再宣言マージされるエラー
    拡張extends& で合成


    覚え方

    外から足される可能性があるなら interface、型そのものに別名を付けたいなら type、と分けます。チーム内では片方に寄せる規約を決めてしまうのが最も揉めません。

    知識のつながり

    サイドバーと同じ推奨ルート・関連語を、まとめて確認できます。

    現在地interface / typeプログラミング

    LEARN BY DOING

    この用語を、教材で使ってみる

    直接関連する編と、その編を含むコースです。用語だけで終わらず、ブラウザ上で実際に手を動かせます。

    この用語を扱うコース

    コース

    TypeScript入門:型を付けて関数を書く

    22レッスン
    コース

    TypeScript道場 fleama開発室の10問

    10レッスン
    TypeScriptコースの全編を見る