Zod 是一个以 TypeScript 为首的模式声明和验证库
最近的项目中,涉及到大量的接口调用,前端代码默认接口返回的数据是满足类型声明的,并没有进行校验。昨天在网上发现一个名为Zod的库,感觉还挺不错的。
假设项目中有这么一段代码
type User = {
name: string;
age: number;
};
//假设从接口获取到数据
const src_json_str = '{"name":"hello" , "age":28}'
//这里没有验证数据是否满足要求
const data_json = JSON.parse(src_json_str) as User
console.log(data_json);
这段代码有个问题,如果接口返回的"age"不是数字,而是字符串,那么就可能会产生一个隐藏的bug,这个时候,Zod
库就能帮我们找出这个潜在的问题。
import { z } from "zod";
const User = z.object({
name: z.string(),
age: z.number(),
});
// 假设这里 age 的数据类型为 string,不是 number
const src_json_str = '{"name":"hello" , "age":"28"}';
//这里没有验证数据是否满足要求
const data_json = User.parse(JSON.parse(src_json_str));
console.log(data_json);
运行上面的代码,程序会直接报异常(下图),将错误在开发阶段就暴露出来。
当然除了数据类型的判断,Zod
库还能做一些简单的逻辑判断:
const User = z.object({
name: z.string().min(2).max(10).optional(),// name 字符串长度在2~10之间,且为可选字段
age: z.number().gt(0),//age 大于 0
});
这个库使用比较简单,细节可以参考官网。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。