開發工具

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 則評分)