跳到正文
馬克工具箱

JSON 轉 TypeScript

把一段 JSON 示例(介面返回、配置檔案、測試資料)轉成可以直接貼上進程式碼的 TypeScript 型別。巢狀物件會生成獨立的命名型別,陣列元素之間的差異會變成可選欄位或聯合型別。

在瀏覽器本地執行,輸入的內容和檔案都不會上傳

使用步驟

  1. 貼上 JSON 示例,或點「載入示例」。
  2. 設定根型別的名稱。
  3. 選擇生成 interface 還是 type。
  4. 複製或下載生成的型別。

引數說明

根型別名稱
頂層型別的名稱,例如 User、ApiResponse。巢狀型別按鍵名命名,address 生成 Address,posts 的元素生成 Post。
用 type 代替 interface
生成 type User = { … } 形式的類型別名。對普通資料來說兩者效果相同。

使用示例

{"id": 1, "tags": ["a"], "owner": {"name": "Ada"}} 會生成:

export interface Owner {
  name: string;
}

export interface Root {
  id: number;
  tags: string[];
  owner: Owner;
}

常見問題

物件陣列怎麼處理?

所有元素合併成一個型別。只在部分元素中出現的鍵變成可選(key?),有時為 null 的值變成 string | null 這樣的聯合型別。

為什麼有的欄位是 unknown?

示例中這個欄位只有 null,推斷不出真實型別。請手動改成正確的型別,或換一份該欄位有值的示例。

整數和小數會區分嗎?

TypeScript 中都是 number。Go、Rust 和 Python 的輸出會區分整數和小數。

JSON 資料會上傳嗎?

不會。型別在瀏覽器中生成,包含真實資料的介面返回也不會離開你的裝置。

隱私說明

本工具完全在瀏覽器中執行,檔案和文字都在你的裝置上處理,不會上傳到我們的伺服器。

相關工具