object type オブジェクト型

最終更新:2026-10-22

object type オブジェクト型

オブジェクト型は「プロパティ名: 型」の構造でオブジェクトを記述します。1 回しか使わないならインラインで書き、再利用するなら interface か type に任せます。TS は「形状の一致」で互換性を判断します。

グループ型の組み合わせ
種類型
strict モード不要

ℹ️ 説明 エディタは TypeScript を JavaScript にトランスパイルして実行します(型チェックなし)。型チェック結果は各サンプルの出力を参照してください。

📝 構文

const user: { id: number; name: string; tags?: string[] } = {
  id: 1,
  name: "Ada",
};

⚙️ パラメータ

{ name: string }セミコロンかカンマで区切られたプロパティ宣言で、値の型は任意の型(ネストしたオブジェクトを含む)にできます
?/readonlyオプションと読み取り専用の修飾子は、インラインのオブジェクト型にも同じように適用されます

戻り値:戻り値はありません。オブジェクト型は純粋な型レベルの概念であり、実行時コードを一切生成しません。

▶ サンプル

下のコードを編集して「試す」を押すと、トランスパイル実行結果を確認できます:

出力:

5 no label

(トランスパイル後の実行出力。point に型に存在しない z フィールドを書くと、余分なプロパティチェックでエラーになります)

💡 ポイント

ℹ️ 説明 TS は構造的型システムです。形状さえ一致すれば互換であり、特定のクラスやインターフェースを明示的に継承する必要はありません(「ダックタイピング」)。
💡 ヒント 構造が 2 箇所以上から参照されるなら interface/type に抽出しましょう。エラーメッセージが短くなり、修正も 1 箇所で済みます。
⚠️ 注意 オブジェクトリテラルの代入では「余分なプロパティチェック」が発火します。型に存在しないフィールドを書くと即座にエラーになり、先に変数に代入してから渡すとチェックを迂回できます。
ケースは今後追加予定です。

📚 関連チュートリアル

❓ よくある質問

Q 構造的型(ダックタイピング)とは何ですか?
A 型の互換性は「必要なプロパティとその型があるかどうか」だけを見て、宣言がどこから来たかは見ません。{x: 1, y: 2, z: 3} は {x: number; y: number} に代入でき、余分な z は問題になりません。
Q インラインのオブジェクト型と interface はどちらを使うべきですか?
A 1 回しか使わず単純ならインラインにします。再利用や拡張が必要、または IDE に名前でヒントを出させたいなら interface/type を使いましょう。
Q 関数の引数がオブジェクトの場合はどう注釈しますか?
A 引数の位置に直接構造を書きます。function draw(p: { x: number; y: number }) {} のようにです。構造が複雑なら先に interface を定義してから参照します。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%