JSON → TypeScript インタフェース生成
使い方
JSON データを左側に貼り付けると、対応する TypeScript の `interface` 定義が右側に出力されます。ネストしたオブジェクトはそれぞれ独立した interface として展開され、配列の要素型も推論されます。ルート interface の名前は変更できます。
型推論のルール
JSON の値から TS 型を以下のように推論します:`null` → `null`、文字列 → `string`、数値 → `number`、真偽値 → `boolean`、配列 → 要素型の `T[]`(混在した場合はユニオン)、オブジェクト → 個別の interface。配列の要素オブジェクトは最初の要素から型を推論します。完全な型推論は TypeScript の構造的型システムを使う方が正確なので、本ツールは「最初の足場」を作る用途と割り切っています。
活用シーン
- REST API のレスポンス JSON から TS の型定義を起こすたたき台に
- 設定ファイルや YAML から JSON を経由して型を生成
- GraphQL なしで API レスポンスを型付けしたい場合
- 既存 JS コードを TypeScript に移植する際、データ型の足場作り
- スキーマレスな MongoDB ドキュメントのサンプリングから型を起こす
プライバシー
JSON のパースと型推論はすべてブラウザ内で完結します。入力したデータがサーバーに送信されることはなく、機密情報を含む JSON でも外部に漏れる経路はありません。
よくある質問
type エイリアスではなく interface を生成するのはなぜですか?
オブジェクトの形を表現する際は interface が TypeScript の慣用的な選択で、宣言マージや拡張にも対応できます。ネストしたオブジェクトはそれぞれ名前付きの interface になるため、深くインライン展開された 1 つの型ではなく、再利用しやすい階層として読める出力になります。
本番データや実際の値を含む API レスポンスを貼り付けても大丈夫ですか?
はい。パースと型推論はすべてブラウザ内で行われ、アップロードや保存は一切ありません。トークンや個人情報を含むレスポンスでも端末内にとどまります。そもそも生成される型は値ではなく構造だけを表すものです。
オブジェクトの配列からはどのように型が推論されますか?
要素の型は配列の最初の要素から推論されます。後続の要素にフィールドの過不足があってもマージはされないため、サンプルが不揃いな場合は出力を確認してください。
null・混在配列・空オブジェクトはどう扱われますか?
null は `null` 型に、[1, "a"] のような混在配列は (number | string)[] のようなユニオンの要素型になります。あくまでベストエフォートの足場なので、オプショナルなフィールドや正確な絞り込みは後から手で調整してください。
ルートの interface 名は変更できますか?
はい。ルート名フィールドからルート interface の名前を変更できます。生成される型を User や ApiResponse など既存のドメイン名に合わせたいときに便利です。