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

如何使用Zod验证包含字符串与字符串数组的混合数组结构?

用Zod验证混合类型数组的正确方法

你之前的Schema错误在于使用了z.string().and(z.array(z.string())),这要求数组中的每个元素同时既是字符串又是数组,逻辑上不可能实现,因此才会出现两个矛盾的错误提示。

要验证['foo', ['bar', 'baz']]这种元素可同时为字符串或字符串数组的混合数组,正确做法是用z.union定义元素的可选类型:

import { z } from 'zod';

const mixedArraySchema = z.array(
  z.union([
    z.string(),
    z.array(z.string())
  ])
);

// 验证测试
const testData = ['foo', ['bar', 'baz']];
const result = mixedArraySchema.safeParse(testData);
console.log(result.success); // 输出 true

如果后续需要基于元素类型做差异化处理,也可以使用z.discriminatedUnion,但对于当前验证需求,z.union已足够满足。

内容的提问来源于stack exchange,提问作者Cjmarkham

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 07:22:05