
JSON 到 TypeScript 轉換器讀取範例 JSON 值(API 回應、設定檔、資料庫記錄)並寫入描述它的 TypeScript 介面。嵌套物件成為它們自己的命名接口,物件陣列被合併到單一元素接口而不是龐大的聯合中,並且某些記錄中為空或缺失的鍵被標記為可選。您貼上已有的資料;您會得到原本手寫的類型。
用手輸入 API 回應是乏味且容易出錯的:您輸入您 *think* 端點返回的內容,而不是實際傳回的內容。 您從未注意到的欄位會被省略,有時為空的整數會被輸入為「數字」,並且錯誤在生產時的運行時而不是在您的編輯器中浮出水面。 直接從真實有效載荷產生類型可以縮小差距,因為您編譯的形狀是伺服器實際發送的形狀。
一切都在您的瀏覽器中運行。推理引擎是無依賴性的 TypeScript,而不是遠端服務的包裝器,因此有效負載(通常攜帶存取令牌、客戶記錄和內部 ID)永遠不會離開頁面。選擇介面或類型別名,切換 `export` 關鍵字和 “`readonly` 修飾符,選擇縮排寬度,然後複製輸出或下載 “ts 檔”。
產生的介面描述了您提供的樣本,而不是您呼叫的 API,這種區別就是整個風險。即使伺服器有時會省略它,也需要在範例的每個物件中標記一個字段,並且樣本中為空的字段無法與始終為空的字段區分開來。空數組是最明顯的情況:沒有元素的數組不會提供有關其所包含內容的資訊。數組合併透過將清單中的每個物件組合到一個介面中並將某些條目中缺少的金鑰標記為可選,從而產生更誠實的類型,從而有所幫助。如果 API 具有架構或 OpenAPI 文檔,請從中生成並使用它來探索未記錄的回應。
刪除 API 回應、夾具檔案或任何 JSON 值。 如果您想查看嵌套物件、數組和空字元的處理方式,請先載入樣本。
設定根類型名稱 - 通常是資源,例如使用者或發票。嵌套介面會根據其金鑰自動命名,陣列元素名稱單一化(釋放變為釋放)。
選擇介面或類型別名,決定是否匯出每個聲明,如果您的程式碼庫喜歡不可變的形狀,請新增 ReadOnly 修飾符,並將縮排設定為 2 或 4 個空格。
按產生。 查看推斷的可選選項和聯合,然後將程式碼複製到您的剪貼簿或將其下載為 .ts 檔案,以便放入您的類型資料夾。
每個嵌套的物件都變成了它自己的命名、可重複使用的介面,而不是內嵌的匿名形狀,因此您可以獨立導入和引用內部類型。
物件數組合併為一個元素介面。 某些記錄中存在的金鑰而不是其他記錄中的密鑰變得可選,這正是真實分頁 API 資料的行為。
選擇空值是否表示金鑰是可選的,或者空的是否屬於聯合。 這兩個約定都很常見;該工具不會強制執行程式庫中的一個。
發出 `interface user {}` 或 `type user = {}` 以配合您現有的 LINT 規則,可選的 `export` 和 `readonly` 修飾符一致地應用於每個聲明。
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.
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.
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. 100% in your browser.
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.
0 comments
No comments yet. Be the first to share your thoughts!