|
1 | 1 | <p align="center"> |
2 | 2 | <img src="logo.svg" width="200px" align="center" alt="Zod logo" /> |
3 | 3 | <h1 align="center">Zod</h1> |
4 | | - <p align="center">TypeScript-first schema validation with static type inference |
| 4 | + <p align="center">利用静态类型推断进行 TypeScript 优先模式验证 |
5 | 5 | <br/> |
6 | 6 | <a href="https://zod.dev">https://zod.dev</a> |
7 | 7 | </p> |
|
16 | 16 | </p> |
17 | 17 |
|
18 | 18 | <div align="center"> |
19 | | - <a href="https://zod.dev">Documentation</a> |
| 19 | + <a href="https://zod.dev">文档</a> |
20 | 20 | <span> • </span> |
21 | 21 | <a href="https://discord.gg/RcG33DQJdf">Discord</a> |
22 | 22 | <span> • </span> |
23 | 23 | <a href="https://www.npmjs.com/package/zod">NPM</a> |
24 | 24 | <span> • </span> |
25 | | - <a href="https://github.com/colinhacks/zod/issues/new">Issues</a> |
| 25 | + <a href="https://github.com/colinhacks/zod/issues/new">讨论</a> |
26 | 26 | <span> • </span> |
27 | 27 | <a href="https://twitter.com/colinhacks">@colinhacks</a> |
28 | 28 | <span> • </span> |
|
35 | 35 |
|
36 | 36 | # 內容 |
37 | 37 |
|
38 | | -- [什么是 Zod](#什么是 Zod) |
39 | | -- [生态体系](#生态系统) |
| 38 | +- [什么是 Zod](#什么是-zod) |
| 39 | +- [生态体系](#生态体系) |
40 | 40 | - [安装](#安装) |
41 | 41 | - [基本用法](#基本用法) |
42 | 42 | - [原始类型](#原始类型) |
43 | 43 | - [原始类型的强制转换](#原始类型的强制转换) |
44 | 44 | - [字面量](#字面量) |
45 | | -- [Strings](#strings) |
| 45 | +- [字符串](#字符串) |
| 46 | + - [ISO 日期](#iso-日期) |
| 47 | + - [IP 地址](#ip-地址) |
46 | 48 | - [Numbers](#numbers) |
47 | 49 | - [Objects](#objects) |
48 | 50 | - [.shape](#shape) |
|
102 | 104 |
|
103 | 105 | # 什么是 Zod |
104 | 106 |
|
105 | | -Zod 是一个以 TypeScript 为首的模式声明和验证库。我使用术语 "模式 "来广义地指任何数据类型,从简单的 `字符串` 到复杂的嵌套对象。 |
| 107 | +Zod 是一个 TypeScript 优先的模式声明和验证库。我使用术语 "模式" 来广义地指任何数据类型,从简单的 `字符串` 到复杂的嵌套对象。 |
106 | 108 |
|
107 | | -Zod 被设计成对开发者尽可能友好。其目的是消除重复的类型声明。使用 Zod,你只需声明 _一次_ 验证器,Zod 就会自动推断出静态 TypeScript 类型。它很容易将较简单的类型组成复杂的数据结构。 |
| 109 | +Zod 围绕尽可能友好的开发体验而设计。其目的是消除重复的类型声明。使用 Zod,你只需声明 _一次_ 验证器,Zod 就会自动推断出静态 TypeScript 类型。将简单类型组合成复杂的数据结构非常容易。 |
108 | 110 |
|
109 | 111 | 其他一些重要方面: |
110 | 112 |
|
111 | 113 | - 零依赖 |
112 | | -- 可以工作在浏览器和 Node.js |
113 | | -- 小巧: 8kb minified + zipped |
114 | | -- 不可变: 方法(即 `.optional()` )返回一个新的实例 |
| 114 | +- 适用于 Node.js 和所有现代浏览器 |
| 115 | +- 小巧: 压缩后仅 8kb |
| 116 | +- 不可变: 方法 (如 `.optional()` ) 返回一个新的实例 |
115 | 117 | - 简洁的、可链式调用的接口 |
116 | | -- 功能性方法: [解析,不验证](https://lexi-lambda.github.io/blog/2019/11/05/parse-don-t-validate/) |
117 | | -- 也可用于普通的 JavaScript! 你不需要使用 TypeScript。 |
| 118 | +- 函数式方法: [解析,不验证](https://lexi-lambda.github.io/blog/2019/11/05/parse-don-t-validate/) |
| 119 | +- 也可用于纯 JavaScript! 你不需要使用 TypeScript。 |
118 | 120 |
|
119 | 121 | ## 赞助 |
120 | 122 |
|
121 | | -我们感谢并鼓励任何级别的赞助。Zod 是由一个单独的开发者维护的 ([hi!](https://twitter.com/colinhacks)). 对于个人开发者来说,可以考虑[一杯咖啡级别](https://github.com/sponsors/colinhacks). 如果你使用 Zod 建立了一个付费产品,可以考虑[初创企业级别](https://github.com/sponsors/colinhacks). 你可以在以下网站上了解更多关于等级的信息 [github.com/sponsors/colinhacks](https://github.com/sponsors/colinhacks). |
| 123 | +我们感谢并鼓励任何级别的赞助。Zod 是由一个单独的开发者维护的 ([hi!](https://twitter.com/colinhacks))。对于个人开发者,可以考虑[一杯咖啡级别](https://github.com/sponsors/colinhacks)。如果你使用 Zod 建立了一个付费产品,可以考虑[领奖台级别](https://github.com/sponsors/colinhacks)。 |
122 | 124 |
|
123 | | -### Gold |
| 125 | +### 黄金 |
124 | 126 |
|
125 | 127 | <table> |
126 | 128 | <tr> |
@@ -166,7 +168,7 @@ Zod 被设计成对开发者尽可能友好。其目的是消除重复的类型 |
166 | 168 | </tr> |
167 | 169 | </table> |
168 | 170 |
|
169 | | -### Silver |
| 171 | +### 白银 |
170 | 172 |
|
171 | 173 | <table> |
172 | 174 | <tr> |
@@ -218,7 +220,7 @@ Zod 被设计成对开发者尽可能友好。其目的是消除重复的类型 |
218 | 220 | </tr> |
219 | 221 | </table> |
220 | 222 |
|
221 | | -### Bronze |
| 223 | +### 青铜 |
222 | 224 |
|
223 | 225 | <table> |
224 | 226 | <tr> |
@@ -280,9 +282,9 @@ Zod 被设计成对开发者尽可能友好。其目的是消除重复的类型 |
280 | 282 |
|
281 | 283 | _要在这里看到你的名字 + Twitter + 網站 , 请在[Freelancer](https://github.com/sponsors/colinhacks) 或 [Consultancy](https://github.com/sponsors/colinhacks)赞助 Zod ._ |
282 | 284 |
|
283 | | -# 生态系统 |
| 285 | +# 生态体系 |
284 | 286 |
|
285 | | -有越来越多的工具是建立在 Zod 之上或原生支持 Zod 的! 如果你在 Zod 的基础上建立了一个工具或库,请在[Twitter](https://twitter.com/colinhacks) 或者 [Discussion](https://github.com/colinhacks/zod/discussions)上告诉我。我会在下面添加,并在推特上发布。 |
| 287 | +有越来越多的工具是建立在 Zod 之上或原生支持 Zod 的! 如果你在 Zod 的基础上建立了一个工具或库,请在[Twitter](https://twitter.com/colinhacks) 或者 [Discussion](https://github.com/colinhacks/zod/discussions)上告诉我。我会把它添加到下面,并在推特上发布。 |
286 | 288 |
|
287 | 289 | - [`tRPC`](https://github.com/trpc/trpc): 在没有 GraphQL 的情况下建立端到端的类型安全 API |
288 | 290 | - [`react-hook-form`](https://github.com/react-hook-form/resolvers): 使用 React Hook Form 和 Zod 解析器轻松构建类型安全的表单。 |
@@ -357,7 +359,7 @@ mySchema.safeParse("tuna"); // => { success: true; data: "tuna" } |
357 | 359 | mySchema.safeParse(12); // => { success: false; error: ZodError } |
358 | 360 | ``` |
359 | 361 |
|
360 | | -创建一个 Object 模式 |
| 362 | +创建一个对象模式 |
361 | 363 |
|
362 | 364 | ```ts |
363 | 365 | import { z } from "zod"; |
@@ -553,7 +555,7 @@ datetime.parse("2020-01-01T00:00:00Z"); // fail |
553 | 555 | datetime.parse("2020-01-01T00:00:00.123456Z"); // fail |
554 | 556 | ``` |
555 | 557 |
|
556 | | -### IP addresses |
| 558 | +### IP 地址 |
557 | 559 |
|
558 | 560 | 默认情况下,`z.string().ip()` 方法会验证 IPv4 和 IPv6 |
559 | 561 |
|
|
0 commit comments