ツール

JSON → TypeScript インターフェース変換ツール

API レスポンスを貼り付けるだけで TypeScript のインターフェースや型エイリアスを生成します。省略可能なキーはデータから判定します。

ブラウザ内で実行コード変換1.4万
無料

入力

0 B

結果

結果はここに表示されます。

API レスポンスに手作業で型を付けるのは時間がかかり、しかもミスが入り込みやすい作業です。ときどき欠けるフィールド、ときどき null になる値、すべてのオブジェクトが同じキーを持つとは限らない配列などがその典型です。このツールは JSON を quicktype に渡します。quicktype は Glide がオープンソース化した型生成ツールで、エディター拡張機能 Paste JSON as Code のエンジンでもあります。結果は、そのままプロジェクトに貼り付けられるインターフェースとして返ってきます。JSON が配列の場合はすべての要素を比較するため、一部の要素にしかないキーは省略可能として、ときどき null になる値は null とのユニオン型として出力されます。

動作のしくみ

  • quicktype-core はページ内で動作します。ライブラリは約 1 MB あるため、このツールで初めて「実行」を押したときにだけダウンロードされます。
  • ネストされたオブジェクトはそれぞれ名前付きのインターフェースになり、別々の場所に現れる同一の形は 1 つの型にまとめられます。
  • 日付に見える文字列も string 型のままにします。JSON.parse が実際に返すのは文字列だからです。
  • interface 宣言か型エイリアス宣言かを選べるほか、全フィールドへの readonly 付与や、トップレベルの型名の指定もできます。

データの行き先

どこにも行きません。このツールは完全にブラウザ内で動作します。貼り付けたテキストはページが処理し、サーバーに送信されることも、ログに記録されることもありません。

このツールは無料で登録不要です。結果は開いているページの中にだけあり、どこにも保存されません。

必要なポイント

このツールは無料です。ログインもポイントも必要ありません。

よくある質問

フィールドが省略可能かどうかは、どうやって判定していますか?
与えられたデータだけで判定します。JSON がオブジェクトの配列で、少なくとも 1 つの要素にあるキーが欠けていれば、そのキーには疑問符が付きます。単一のオブジェクトにはどちらとも判断する材料がないため、すべてのキーが必須になります。省略可能なキーを正しく判定させたい場合は、実際のレスポンスを複数まとめて 1 つの配列として貼り付けてください。
string | null ではなく null 型になるフィールドがあるのはなぜですか?
サンプルの値がすべて null だったため、quicktype にはほかに手がかりがなかったからです。値が入っているときに何が入るのかを知る方法がありません。GitHub のサンプルにある mirror_url がその例です。そのフィールドに値が入っている例を追加するか、手作業で型を広げてください。
interface と型エイリアス、どちらを選ぶべきですか?
単純なオブジェクトの形であれば、実用上はどちらでも同じです。インターフェースは拡張でき、再宣言によるマージもでき、これに依存するライブラリもあります。型エイリアスはユニオン型やマップ型も表現できます。多くのコードベースはどちらかに統一しているので、それに合わせられるようにオプションを用意しています。
実行時にレスポンスを検証してくれますか?
いいえ。TypeScript の型はコンパイル時に消えるため、形が合わないレスポンスもそのまま通ってしまいます。実行時のチェックが必要なら、このサイトの JSON → Zod ツールで同じ JSON から Zod スキーマを生成し、それでレスポンスをパースしてください。

背後にあるオープンソース

このツールは glideapps/quicktype(Apache-2.0)の上で動作しています。同じ処理を自分のプログラムに組み込みたい場合は、そのライブラリを使ってください。

glideapps/quicktype

別の呼び方

  • json typescript 変換
  • json ts interface 生成
  • json から 型 生成
  • typescript 型定義 自動生成
  • quicktype オンライン
  • api レスポンス typescript 型