コンテンツにスキップ
ToolsMinify logo
開発者ツール

JSON から TypeScript インターフェース変換

ブラウザで JSON サンプルから TypeScript interface を生成 - アカウント、upload、codegen CLI 不要。API レスポンス、できればレコード配列を貼り付け。ネストオブジェクトは名前付き interface、配列は全要素から型付け(先頭のみではない)、同一形状は重複排除。ウォーカーは欠落キーと JSON null…

JSON から TypeScript インターフェース変換について

ブラウザで JSON サンプルから TypeScript interface を生成 - アカウント、upload、codegen CLI 不要。API レスポンス、できればレコード配列を貼り付け。ネストオブジェクトは名前付き interface、配列は全要素から型付け(先頭のみではない)、同一形状は重複排除。ウォーカーは欠落キーと JSON null を混同しません: 一部 item で省略されたキーは optional (`?`); 存在するが null は `T | null`。`.ts` にコピーまたはダウンロード。minify 済みなら JSON Minifier、1フィールド確認なら JSONPath Tester と組み合わせ。

JSON から TypeScript インターフェース変換の使い方

  1. JSON を貼る(レコード配列は単一オブジェクトより optional 推論が正確)。optional と nullable の違いを見るならサンプルを読み込み。
  2. ルート名 (User、Order、ApiResponse) を設定。interface(デフォルト)または type alias。
  3. 推論レポート: 宣言数、optional、nullable、union。空配列、空オブジェクト、全 null フィールド、引用キーを警告。
  4. TypeScript をコピーまたは .ts をダウンロード。types/ に置き `fetch` / TanStack Query をルート名で注釈。
  5. サーバー送信なし。無効 JSON は行・列を報告。

JSON から TypeScript インターフェース変換の例

レコード配列から optional キー

[{"sku":"A1","qty":2},{"sku":"B7","qty":1,"gift":true}] は gift?: boolean 付き Order。最初の item が省略したため optional - null 値ではありません。

Nullable と optional

1行目 email 欠落、他行 note が null なら email?: string と note: string | null。多くのコンバーターが混同する欠落キーと JSON null を分離。

ネスト名前付き interface

{"user":{"address":{"city":"London"}}} は Address、User、Root の順。ネストは PascalCase キー名で Address 単体 import 可能。

引用キーと空コンテナ

{"content-type":"application/json","items":[],"meta":{}} は content-type を引用、items は unknown[]、meta は Record<string, unknown>。より rich なサンプル貼り付けを警告。

interface vs type alias

API レスポンス形状は interface(declaration merging、やや良いエラー)。union や mapped type なら type alias。実行時出力は同じ。

一般的な使用例

  • React、Vue、Next.js で fetch() や axios レスポンスを型付け
  • 実ペイロードから TanStack Query / SWR ジェネリクスを生成
  • webhook 本文 (Stripe、GitHub、Slack) を型付きイベントに
  • OpenAPI 前の fixture 向け型ドラフト
  • JSON 設定 blob をエディター完結 TypeScript に

JSON から TypeScript インターフェース変換に関するよくある質問

JSON を TypeScript interface に変換するには?
JSON サンプルを貼り、ルート名を付け、生成 interface をコピー。ブラウザ内変換。ネストは名前付き interface、配列は全要素、配列 item 間で欠けるキーは ? optional。
optional (?) と nullable (| null) の違いは?
Optional は一部配列 item でキーがなかった。Nullable はキーがあり値が JSON null。email?: string は省略可。note: string | null はキー必須。サンプルが両方示さない限り email?: string | null に潰しません。
interface と type alias どちらを出力?
ファイル跨ぎ extend/merge するオブジェクト形状は interface。union、intersection、mapped type は type alias。典型 API レスポンスはどちらも可; 本ページは JSON モデルの慣習で interface デフォルト。
unknown[] や Record<string, unknown> になる理由は?
空配列は要素 inspect 不可で unknown[]。空オブジェクトはキーなしで Record<string, unknown>。具体型やネスト interface には中身のある例を貼る。
quicktype の代替?
いいえ。quicktype.io が多言語 codegen と runtime validator。本ページは貼り付けペイロード向け私的クライアント側 JSON to TypeScript - インストール・アカウント不要、optional と JSON null を分離するレポート付き。
JSON はアップロードされる?
いいえ。解析と推論はブラウザ内のみ。社内 API、トークン、PII に安全。DevTools Network でリクエストなしを確認。
JSON 配列から型を生成できる?
はい。キーが行ごとに変わるなら推奨。レコード配列は1 interface にマージ、欠落キーは optional。ルート Users なら interface User と type Users = User[]。User ならペイロードは User[]。