開發工具

JSON 轉 TypeScript — interface 與 type 型別產生器

在瀏覽器中將 JSON 範例轉為 TypeScript interface 或 type,支援巢狀物件、陣列、可選屬性與聯集型別,可複製產生的宣告。

從 JSON 產生 TypeScript 型別草稿。上限:輸入 100,000 個 UTF-16 編碼單元、深度 64(根層為 0)、10,000 個值,輸出 500,000 個字元、1,000 個型別宣告。本工具不會傳送輸入內容;頁面資源、流量分析與廣告仍可能使用網路連線。

型別產生設定

限 64 個 ASCII 英文字母、數字、_ 或 $。不能以數字開頭,也不能使用保留名稱或 Record。

請輸入 JSON 以產生型別。

輸出是一組型別宣告。未加入 export 時,請放在已有 import 或 export 的模組中,或在獨立檔案加入 export {}。若用於全域指令碼,Array、Node 等名稱可能與既有型別衝突。也請檢查同一作用域中的其他型別名稱。

使用方式與推論範圍

型別依據範例中出現的值推論。陣列中的部分物件缺少某屬性時,該屬性會設為可選;不同型別會合併為聯集型別。只有 null 的屬性仍是 null 型別,即使設為可選也不會移除 null。空陣列為 unknown[];只有空物件時為 Record<string, unknown>。

小型物件行內展開適用於最多兩個屬性的子物件。readonly 限制屬性重新賦值,不會讓陣列元素變成不可變。根資料為陣列或原始型別時,一律使用 type。日期字串仍是 string。

無法推論範例未涵蓋的值或業務規則,也不會在執行階段驗證或轉換資料。number 不保證數值精度或範圍。格式化與型別設定、宣告數量上限無關,會檢查 JSON 語法及輸入、輸出長度,並保留數值原始寫法。同一物件含重複鍵時,型別推論採用最後一個值。請在使用的專案中確認型別與數值處理方式。

關於JSON 轉 TypeScript — interface 與 type 型別產生器

從 JSON 範例建立 TypeScript 型別草稿

依據 JSON 範例中的值產生 interface 或 type 宣告,適合整理 API 回應或資料結構的初稿。工具無法推論範例以外的值或業務規則,也不會在執行階段驗證、轉換資料,請在專案中確認產生的型別。

型別產生與格式化都在瀏覽器內執行,本工具不會傳送輸入的 JSON。頁面資源、流量分析與廣告仍可能產生網路連線。

陣列、缺少的屬性與 null

工具會收集陣列所有元素中的型別。同一屬性出現不同型別時,會產生聯集型別;部分物件缺少的屬性則設為可選。巢狀物件也依相同方式彙整。只有 null 的屬性仍是 null 型別;將含 null 的屬性設為可選,只是另外允許省略該屬性,不會移除 null。

空陣列為 unknown[],只有空物件時為 Record<string, unknown>。日期字串仍為 string,數值為 number;number 不保證 JavaScript 的數值精度與範圍。同一物件含重複鍵時,推論採用最後一個值。

格式化獨立於根型別名稱、型別設定與宣告數量限制,會檢查 JSON 語法及長度上限,並保留數值的原始寫法。

輸出設定與使用限制

可選擇 interface 或 type、加入 export、readonly、將含 null 的屬性設為可選,以及行內展開最多兩個屬性的子物件。根資料為陣列或原始型別時,一律使用 type。readonly 限制屬性重新賦值,不會禁止修改陣列元素。

根型別名稱限 64 個 ASCII 英文字母、數字、_ 或 $,不能以數字開頭,也不能使用保留名稱或 Record。子型別會調整為合法識別名稱,並加上編號避免重複;屬性名稱會保留。

未加入 export 的輸出,請放在已有 import 或 export 的模組中,或在獨立檔案加入 export {}。在全域指令碼中,Array、Node 等名稱可能與既有型別衝突,也要檢查同一作用域的其他名稱。

上限為輸入 100,000 個 UTF-16 編碼單元、深度 64(根層為 0)、10,000 個值,輸出 500,000 個字元與 1,000 個型別宣告。不合法或超過上限時不提供部分型別輸出;若格式化結果超過輸入長度上限,會保留原有輸入。

常見問題

Q. 缺少屬性與 null 有何不同?
陣列中有物件缺少某個屬性時,該屬性會加上 ?。null 仍保留為值的型別。將含 null 的屬性設為可選,代表額外允許該屬性不存在。
Q. 可以處理大型或深層 JSON 嗎?
可處理輸入 100,000 個 UTF-16 編碼單元、深度 64(根層為 0)、10,000 個值,輸出 500,000 個字元與 1,000 個型別宣告以內的資料。超過時請拆分為具有代表性的範例,再檢查合併後的型別。
Q. 複製或貼上沒有回應怎麼辦?
五秒後會顯示等待提示。複製尚未完成時,原操作可能延遲完成並將剪貼簿覆寫為舊內容,因此請勿執行其他複製操作,包括手動複製。原操作結束後可重試或手動複製。貼上沒有回應時,可在輸入欄位手動貼上。原本的 API 請求無法取消,完成前不能再次執行相同的 API 操作。
Q. 應選擇 interface 還是 type?
兩者都能描述物件。interface 支援宣告合併,type 也能表示聯集與原始型別別名。請依專案設計選擇;未加入 export 的輸出應放在模組中使用,並檢查既有型別名稱。
Q. JSON 會上傳嗎?
本工具在瀏覽器內產生型別及格式化 JSON,不會傳送輸入內容。頁面資源、流量分析與廣告仍可能使用網路連線。

資料來源與規格

相關工具

有問題或建議嗎? 聯絡 NanToo

為這項工具評分
—(0 則評分)