You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 04:50:42