<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                [TOC] > [home](https://zod.dev/?id=table-of-contents) > [中文](https://zod.dev/README_ZH) ## 概述 Zod 是一個 TypeScript 優先的模式聲明和驗證庫。我使用術語“架構”來廣義地指代任何數據類型,從簡單的`字符串`到復雜的嵌套對象。 Zod 旨在盡可能對開發人員友好。目標是消除重復的類型聲明。使用 Zod,只需聲明*一次*驗證器,Zod 就會自動推斷出靜態 TypeScript 類型。將更簡單的類型組合成復雜的數據結構很容易。 其他一些很棒的方面: * 零依賴 * 適用于 Node.js 和所有現代瀏覽器 * 小:8kb 縮小 + 壓縮 * Immutable: 方法(例如`.optional())`返回一個新實例 * 簡潔、可鏈接的接口 * 函數式方法:[解析,不驗證](https://lexi-lambda.github.io/blog/2019/11/05/parse-don-t-validate/) * 也適用于純 JavaScript!您不需要使用 TypeScript。 ## 安裝 ``` pnpm add zod ``` ## 驗證 ``` const name = z.string({ required_error: "Name is required", invalid_type_error: "Name must be a string", }); // 使用驗證方法時,你可以傳遞一個附加參數,以提供自定義錯誤信息 z.string().min(5, { message: "Must be 5 or more characters long" }); z.string().max(5, { message: "Must be 5 or fewer characters long" }); z.string().length(5, { message: "Must be exactly 5 characters long" }); z.string().email({ message: "Invalid email address" }); z.string().url({ message: "Invalid url" }); z.string().emoji({ message: "Contains non-emoji characters" }); z.string().uuid({ message: "Invalid UUID" }); z.string().includes("tuna", { message: "Must include tuna" }); z.string().startsWith("https://", { message: "Must provide secure URL" }); z.string().endsWith(".com", { message: "Only .com domains allowed" }); z.string().datetime({ message: "Invalid datetime string! Must be UTC." }); z.string().ip({ message: "Invalid IP address" }); //日期 const datetime = z.string().datetime(); datetime.parse("2020-01-01T00:00:00Z"); // pass datetime.parse("2020-01-01T00:00:00.123Z"); // pass datetime.parse("2020-01-01T00:00:00.123456Z"); // pass (任意精度) datetime.parse("2020-01-01T00:00:00+02:00"); // fail (不允許偏移) // 整形 z.number().gt(5); z.number().gte(5); // alias .min(5) z.number().lt(5); z.number().lte(5); // alias .max(5) ``` ## 示例 ### hello-world 字符串 ``` import { z } from "zod"; // 創建一個字符串的模式 const mySchema = z.string(); // 解析 mySchema.parse("tuna"); // => "tuna" mySchema.parse(12); // => throws ZodError // "安全"解析(如果驗證失敗不拋出錯誤) mySchema.safeParse("tuna"); // => { success: true; data: "tuna" } mySchema.safeParse(12); // => { success: false; error: ZodError } ``` 對象 ``` import { z } from "zod"; // 定義 schema const UserSchema = z.object({ username: z.string() .min(3, "用戶名至少3個字符") .max(20, "用戶名最多20個字符"), age: z.number() .min(0, "年齡不能為負") .max(120, "年齡不能超過120"), email: z.string() .email("郵箱格式不正確"), website: z.string() .url("請輸入有效的URL") .optional(), role: z.enum(["admin", "user"]), }); // 使用 schema 驗證數據 type User = z.infer<typeof UserSchema>; // 自動推導類型 try { const user = UserSchema.parse({ username: "張三", age: 25, email: "zhangsan@example.com", role: "admin" }); console.log("驗證通過:", user); } catch (error) { console.error("驗證失敗:", error); } ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看