JSON→TypeScript型 変換でできること
APIのレスポンスなどのJSONを貼り付けて、TypeScriptの型定義(interface または type)を作るツールです。手で型を書く手間を省き、入れ子のオブジェクトや配列の要素の型をまとめて確認できます。
使い方
- 左の「JSON」欄にJSONを貼り付けます(開いた時点では例の注文データが入っています)。書き方が崩れているときは「整形」で読みやすくできます。
- 上の「ルートの型名」に一番外側の型の名前を入れ、「書き方」で interface か type を選びます。必要に応じて「export をつける」「readonly にする」「すべてのキーを引用符で囲む」を切り替えます。
- JSONに誤りがあると、何行目・何文字目の何が問題かを日本語で表示するので、その場所を直します。
- 右の「TypeScript」に出た型を確認し、「コピー」でエディタに貼り付けます。
計算の仕組みと注意点
- 入れ子のオブジェクトはキー名をPascalCaseにした名前の型に分けます。配列のキーは末尾の s を外した単数形の名前(items → Item)にし、同じ形のオブジェクトは1つの型にまとめます。
- 配列の中のオブジェクトはまとめて1つの型にし、一部の要素にしかないキーは省略可能(?)にします。違う種類の値が混ざった配列はユニオン型、null がまじるキーは「| null」になります。null しか入っていないキーや空の配列は型を決められないので、null 型・unknown[] になります。
- JSONには日付型や整数型がないため、日付の文字列は string、整数と小数は number になります。1つのサンプルからの推測なので、APIの仕様書があればそちらも確認してください。
- 英数字と _ $ 以外を含むキー(例:x-request-id)は自動で引用符で囲みます。入力したJSONはこのブラウザ内だけで処理し、外部には送信しません。
よくある質問
APIのレスポンスからTypeScriptの型を自動で作るには?
レスポンスのJSONをそのまま左の欄に貼り付けると、すぐに interface が作られます。ルートの型名を変えて「コピー」を押せば、そのままコードに貼り付けられます。
interface と type のどちらで出力すればいい?
オブジェクトの形を表すだけならどちらでも同じように使えます。チームやプロジェクトの書き方に合わせて「書き方」を切り替えてください。interface は同じ名前で宣言を足せる、type はユニオン型などにも使える、という違いがあります。
配列の要素によってキーがあったりなかったりする場合は?
配列の全要素をまとめて1つの型にし、一部の要素にしかないキーには ? をつけて省略可能にします。例のJSONでは items の options と giftWrap がそうなっているので、出力で確かめられます。
JSONのエラーで変換できない
末尾のカンマ、シングルクォート、コメント、キーの引用符の付け忘れはJSONでは使えません。エラー表示に出る行と文字の位置、^ の印を見て直すと、自動で型を作り直します。