TypeScript 静态类型校验库 Zod 现已发布 3.21.0 版本。
Zod 是一个以 TypeScript 为首的模式声明和验证库,其目的是消除重复的类型声明,适用于在框架层辅助建立全链路的类型安全。使用 Zod,开发者只需声明一次验证器,Zod 就会自动推断出静态 TypeScript 类型。
新版本带来如下新内容:
z.string().emoji()
#2045 现在可以验证字符串中的所有字符是否是表情字符。
z.string().emoji()
z.string().ip()
#2066 默认情况下,允许 v4 和 v6 IP地址。
const v4IP = "122.122.122.122";
const v6IP = "6097:adfa:6f0b:220d:db08:5021:6191:7990";
const ipSchema = z.string().ip();
ipSchema.parse(v4IP) //pass
ipSchema.parse(v6IP) //pass
指定一个特定的version
:
const ipv4Schema = z.string().ip({ version: "v4" });
const ipv6Schema = z.string().ip({ version: "v6" });
z.bigint().{gt|gte|lt|lte}()
ZodBigInt
获取与 ZodNumber
相同的方法集
z.bigint().gt(BigInt(5));
z.bigint().gte(BigInt(5));
z.bigint().lt(BigInt(5));
z.bigint().lte(BigInt(5));
z.bigint().positive();
z.bigint().negative();
z.bigint().nonnegative();
z.bigint().nonpositive();
z.bigint().multipleOf(BigInt(5));
ZodError
捕获中的访问
#2087 访问 .catch()
方法中抛出的错误。
const numberWithErrorCatch = z.number().catch((e) => {
console.error(e); // ZodError
return 42;
});
错误修复
Zod 3.20.2 引入了一种意外的类型投递,导致某些用户的编译时间过长 。这些类型的错误很难诊断, Zod 3.21 #2107解决了这些问题:
- #2142
- #1741
- https://stackoverflow.com/questions/74881472/slow-typescript-autocompletion-in-vs-code-for-zod
更新公告:https://github.com/colinhacks/zod/releases/tag/v3.21.0