コンテンツへスキップ
EVOA Toolbox

JSONからTypeScriptへの変換

JSONのサンプルからTypeScriptのインターフェースまたは型を生成します。ネストしたオブジェクト、配列、ユニオン型、null、オプションプロパティに対応。

ブラウザー内でローカルに処理されます。テキストはアップロードされません。

ツールを読み込み中…

このツールでできること

APIレスポンスや設定ファイルのサンプルを貼り付けるだけで、すぐに使えるTypeScriptの宣言が得られます。ネストしたオブジェクトはそれぞれ名前付きのインターフェースになり、配列は型付き配列に、null値はnull型になるため、フィールドが欠ける可能性のある箇所が分かります。

配列に複数のオブジェクトが含まれている場合は、それらの形状がマージされます。すべての要素に存在するプロパティは必須のままで、一部の要素にしか現れないプロパティはオプション(name?: type)になります。異なる種類の値が混在する配列は、(string | number)[] のようなユニオン型になります。first-name のように識別子として有効でないプロパティ名は、引用符で囲まれます。

ルートの型名、インターフェースか型エイリアスか、exportを付けるか、プロパティをreadonlyにするかを選べます。型の推論はお渡しいただいたサンプルをもとにブラウザー内で実行されるため、結果の完全さはサンプル次第です。内容を確認し、APIが別の形を返す可能性がある箇所は型を緩めてください。

使い方

  1. 1代表的なJSONのサンプルを貼り付けます(バリエーションの多いサンプルほど、オプションフィールドを正しく検出できます)。
  2. 2ルートの型名を設定し、インターフェースか型エイリアスかを選びます。
  3. 3exportとreadonlyを、お使いのコードベースのスタイルに合わせて切り替えます。
  4. 4生成されたコードをコピーするか、types.ts としてダウンロードし、フィールドの型をAPIの仕様と照らし合わせて確認します。

対応形式

入力:厳密なJSON。出力:インターフェースまたは型エイリアスを使ったTypeScriptの宣言(.ts)。

プライバシー

このツールはブラウザー上で動作します。入力されたデータはお使いのデバイス上で処理され、当社のサーバーには送信されません。

制限事項

  • 型は1つのサンプルだけから推論されます。サンプルでは常に文字列のフィールドでも、ほかの場面では数値やnullになる可能性があります。
  • 空の配列は、推論の手がかりがないため unknown[] になります。
  • オブジェクト形式のマップ(キーがIDの場合など)は Record<string, T> ではなく、固定のプロパティとして生成されます。これらは手動で変換してください。
  • 日付、UUID、列挙型は単なる string や number として出力されます。ツールはそれらの意味までは判断できません。
  • 数値はすべて number 型になります。JSON.parse で丸められる 2^53 を超える値も同様です。

よくある質問

オプションプロパティはどのように判定されますか?

同じ配列内のオブジェクト(または同じ位置で繰り返されるオブジェクト)を比較することによってのみ判定されます。少なくとも1つの要素にプロパティが存在しない場合は、オプションとして扱われます。値がnullで存在するプロパティは、オプションではなく null 型(または null とのユニオン型)になります。

インターフェースと型エイリアスはどちらを選べばよいですか?

単純なオブジェクトの形状であれば、どちらも置き換え可能です。インターフェースは拡張やマージができ、型エイリアスはユニオン型やマップ型との相性が良くなります。お使いのコードベースですでに使っている方を選んでください。

ネストした2つのオブジェクトに同じ型名が付くのはなぜですか?

構造が同一のオブジェクトは、1つの宣言として再利用されます。異なる形状に同じ名前が付くことになる場合は、2つ目に Item2 のような数字の接尾辞が付きます。

JSONはアップロードされますか?

いいえ。型はブラウザー内で生成されます。

関連ツール