ブログ
日本語

JSONからTypeScriptの型を生成 — 入れ子・配列対応

JSONサンプルからTypeScriptの型を推論。入れ子や配列にも対応

ブラウザー内で処理・アップロード不要

1つのサンプルから型を推論します。プロパティはすべて必須、空配列はunknown[]、形の異なる配列要素はユニオン型になります。実行時の検証コードは生成しません。

変換結果

使い方

  1. APIのレスポンスや設定ファイルのJSONサンプルを貼り付けます。
  2. RootやApiResponseなどの型名を設定します。
  3. exportされた型エイリアスをTypeScriptファイルにコピーします。
  4. 実際のレスポンスで欠けたりnullになったりしうるプロパティを確認します。

推論のルール

文字列はstring、数値はnumber、真偽値はboolean、nullはnullのままです。サンプルに現れたオブジェクトのプロパティはすべて必須になります。プロパティ名は引用符で囲むため、日本語・中国語・韓国語、絵文字、記号もキーとして有効です。配列は推論した異なる形をユニオン型にまとめ、空配列はunknown[]になります。空のオブジェクトはRecord<string, never>になります。

これはサンプルからの推論であり、スキーマを突き止めるものではありません。1回の成功レスポンスから、すべてのエラーレスポンスや省略可能なフィールドは分かりません。重複したキーがあると、前の値を黙って捨てるのではなくエラーにします。コメントや末尾のカンマは正しいJSONではありません。型名にはASCIIの英字・数字・アンダースコア・ドル記号だけを使え、数字で始めることや予約語にすることはできません。入力は100万文字まで、推論は64階層の入れ子までです。

例

{"name":"太郎","score":3,"tags":["中文","😀"]} からは、nameがstring、scoreがnumber、tagsがArrayになります。[1,"two",null] からはArray<number | string | null>が得られます。

プライバシー

変換はブラウザー内で行い、入力をアップロードも保存もしません。出力は開発の出発点です。頼る前に、ドキュメント化されたAPI仕様と比較してください。

よくある質問

形の異なるオブジェクトはオプショナルなプロパティにまとめられますか?

いいえ。形の異なる配列要素は、それぞれの形のユニオン型になります。実際のAPI仕様と照らし合わせて結果を確認してください。

空の配列はどの型になりますか?

unknown[]になります。サンプルから要素についての情報が得られないためです。想定する型が分かっている場合は手動で絞り込んでください。

実行時にデータを検証しますか?

いいえ。生成するのは型エイリアスで、パーサーや検証関数ではありません。型はTypeScriptのコンパイル時に消えます。

入力したJSONはアップロードされますか?

いいえ。変換はブラウザー内で行い、入力をアップロードも保存もしません。

ほしいツールはありますか?