如何显式跳过检查 zod 中的部分架构

dob*_*ler 1 zod

我想了解是否以及如何可以跳过验证 zod 中模式的部分?

在下面的示例中,我想验证架构foo以确保对象包含idtype属性和typenumber属性,但是(可能是因为有大量数据)我想阻止验证所有实际数组条目在。dataarraydata

import {z} from 'zod';

const foo = z.object({
   id: z.number(),
   data: z.array(z.string()),
});
Run Code Online (Sandbox Code Playgroud)

dob*_*ler 5

这完成了工作:

const dataItem = z.custom<DataItem>(); // type DataItem defined by you elsewhere
const foo = z.object({
       id: z.number(),
       data: z.array(dataItem),
    });
// { id: string; data: DataItem[] }

Run Code Online (Sandbox Code Playgroud)

https://github.com/colinhacks/zod/discussions/1575