JSON 到 TypeScript 轉換器是什麼?
JSON 到 TypeScript 轉換器讀取範例 JSON 值(API 回應、設定檔、資料庫記錄)並寫入描述它的 TypeScript 介面。嵌套物件成為它們自己的命名接口,物件陣列被合併到單一元素接口而不是龐大的聯合中,並且某些記錄中為空或缺失的鍵被標記為可選。您貼上已有的資料;您會得到原本手寫的類型。
手動輸入 API 回應是乏味且容易出錯的:您輸入的是您 *認為* 端點傳回的內容,而不是傳回的內容。您從未註意到的欄位將被省略,有時為 null 的整數將鍵入為 `number`,並且錯誤在生產運行時而不是在編輯器中浮出水面。直接從真實有效負載生成類型可以縮小該差距,因為您編譯的形狀就是伺服器發送的形狀。
一切都在您的瀏覽器中運行。推理引擎是無依賴性的 TypeScript,而不是遠端服務的包裝器,因此有效負載(通常攜帶存取令牌、客戶記錄和內部 ID)永遠不會離開頁面。選擇介面或類型別名,切換 `export` 關鍵字和 “`readonly` 修飾符,選擇縮排寬度,然後複製輸出或下載 “ts 檔”。
看看 JSON 到 TypeScript 轉換給您的快速方法是內建樣本。按載入範例,然後產生。您獲得三個 JSON 到 TypeScript 介面:`Root`, “Owner` and “Release`”。第二個版本沒有 `notes` key,所以合併的 “Release` 介面讀取 “`notes?”: string`, and “retretiredAt` is null in the only record, so it become “ “retretiredAt”?: null`。這是誠實的結果,因為一個 null 沒有給出真實類型的證據。要將 JSON 轉換為 TypeScript 作為真實端點,請貼上多個記錄,以便推論有更多內容可供比較。
產生的介面描述了您提供的樣本,而不是您呼叫的 API,這種區別就是整個風險。即使伺服器有時會省略它,也需要在範例的每個物件中標記一個字段,並且樣本中為空的字段無法與始終為空的字段區分開來。空數組是最明顯的情況:沒有元素的數組不會提供有關其所包含內容的資訊。數組合併透過將清單中的每個物件組合到一個介面中並將某些條目中缺少的金鑰標記為可選,從而產生更誠實的類型,從而有所幫助。如果 API 具有架構或 OpenAPI 文檔,請從中生成並使用它來探索未記錄的回應。
如何使用 JSON to TypeScript 轉換器?
貼上你的 json
刪除 API 回應、夾具檔案或任何 JSON 值。 如果您想查看嵌套物件、數組和空字元的處理方式,請先載入樣本。
命名根型
設定根類型名稱 - 通常是資源,例如使用者或發票。嵌套介面會根據其金鑰自動命名,陣列元素名稱單一化(釋放變為釋放)。
選擇您的輸出樣式
選擇介面或類型別名,決定是否匯出每個聲明,如果您的程式碼庫喜歡不可變的形狀,請新增 ReadOnly 修飾符,並將縮排設定為 2 或 4 個空格。
產生,然後複製或下載
按產生。 查看推斷的可選選項和聯合,然後將程式碼複製到您的剪貼簿或將其下載為 .ts 檔案,以便放入您的類型資料夾。
主要特點
嵌套介面提取
每個嵌套的物件都變成了它自己的命名、可重複使用的介面,而不是內嵌的匿名形狀,因此您可以獨立導入和引用內部類型。
智慧型陣列合併
物件數組合併為一個元素介面。 某些記錄中存在的金鑰而不是其他記錄中的密鑰變得可選,這正是真實分頁 API 資料的行為。
您的控制可無效處理
選擇空值是否表示金鑰是可選的,或者空的是否屬於聯合。 這兩個約定都很常見;該工具不會強制執行程式庫中的一個。
介面或類型別名
發出 `interface user {}` 或 `type user = {}` 以配合您現有的 LINT 規則,可選的 `export` 和 `readonly` 修飾符一致地應用於每個聲明。
Frequently Asked Questions
Related Tools
JSON Flattener
Flatten nested JSON into single-level dot-notation keys, or unflatten dotted keys back into nested objects and arrays. Lossless round trip. 100% client-side.
JSON Schema Generator
Generate a JSON Schema from any JSON sample. Infers types, merges arrays of objects into one item schema, derives required fields, and detects date-time, email, uri, and uuid formats. Draft-07 and 2020-12 output. 100% client-side.
JSON to Go Struct
Convert JSON into Go struct definitions with json tags. Nested objects become inline structs, arrays of objects are merged, and field names follow Go conventions. Runs client-side.
JSONPath Tester
Test JSONPath expressions against any JSON and see the matched values and their paths instantly. Supports wildcards, recursive descent, slices, and filters. 100% client-side.
Comments
0 comments
No comments yet. Be the first to share your thoughts!