如何使用Zod编写带扩展类型的元组?
用Zod定义固定首元素的字符串数组类型
你提到的TypeScript类型:
type A = ["A", ...string[]];
表示一个首元素固定为"A"、后续可跟任意数量字符串元素的数组。用Zod可以这样定义:
import { z } from "zod"; // 定义Zod schema const ASchema = z.tuple([z.literal("A")]).rest(z.string()); // 推导对应的TypeScript类型 type A = z.infer<typeof ASchema>;
代码解释
z.tuple([z.literal("A")])强制数组的第一个元素必须是字面量值"A".rest(z.string())指定第一个元素之后的所有元素都得是字符串类型,数量没有限制
验证示例
// 合法输入(验证通过) ASchema.parse(["A"]); ASchema.parse(["A", "hello", "world"]); // 非法输入(验证失败) ASchema.parse(["B"]); // 首元素不符合要求 ASchema.parse(["A", 42]); // 后续元素不是字符串类型
内容的提问来源于stack exchange,提问作者Eliya Cohen
相关产品推荐
相关产品推荐

