
給覺得「光有型別定義還不夠安心」的你
你用 TypeScript 撰寫程式碼,完美地整理了型別定義,編譯錯誤也是零。然而,在執行時,卻因為 API 傳來了預料之外的資料結構,導致應用程式崩潰……。你是否有過這種痛苦的經驗?
最重要的關鍵在於:TypeScript 的型別僅存在於「編譯時」,一旦程式碼在瀏覽器中執行,這些型別就會消失。這意味著:「確認外部資料是否正確」的唯一方法,就是在「執行期」進行檢查。
Zod:將型別安全帶入「執行期」
這就是 Zod 大顯身手的地方。
Zod 讓你定義資料的「結構描述(Schema,即設計圖)」,並在執行時嚴格檢查資料是否符合該設計圖。
- 從入口攔截不正確的資料:如果期待的是
string卻傳來了null,Zod 會立即拋出錯誤,保護後續的程式邏輯。 - 同時獲得型別定義:定義好結構描述後,就能利用
z.infer<T>自動從中提取對應的 TypeScript 型別。
將編寫結構描述的勞力降至「零」
雖然 Zod 非常強大,但要手動編寫與複雜 JSON 匹配的結構描述,仍是一項相當耗時的工作。
本站的 JSON 轉 Zod 轉換工具 旨在消除編寫結構描述的繁瑣感。只需貼上您手邊的 JSON,它就會瞬間為您生成對應的 Zod 結構描述。
基本工作流程
- 複製 API 回傳的 JSON 資料。
- 貼到工具中,生成 Zod 結構描述(
z.object({...}))。 - 將生成的程式碼貼回專案,並透過
Schema.parse(data)開始驗證!
import { z } from 'zod';
// 工具生成的結構描述
const UserSchema = z.object({
id: z.number(),
name: z.string(),
});
// 同時進行執行期檢查與型別提取
type User = z.infer<typeof UserSchema>;
const safeData = UserSchema.parse(rawData);
結語
守護資料的邊界,就是守護系統的穩定性。
將「大概沒問題吧」的推測,轉化為使用 Zod 的「確實驗證」。把手動編寫的繁重工作交給工具,讓自己能專注於實作更核心的業務邏輯。