模式声明和验证库 Zod 介绍

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
});

这个库使用比较简单,细节可以参考官网

Leave a Comment

Back to Top