我想定义一个Zod模式,其中所有属性都可以为空。目前我定义它如下,并为每个属性重复nullable()。有没有更好的方法来避免重复?PS.对于那些建议使用.Partial
的人:它不会**使对象字段为空。
const MyObjectSchema = z
.object({
p1: z.string().nullable(),
p2: z.number().nullable(),
p3: z.boolean().nullable(),
p4: z.date().nullable(),
p5: z.symbol().nullable(),
})
.partial();
1条答案
按热度按时间tpgth1q71#
你可以在对象上使用partial方法或deepPartial方法。
在上面的例子中,你只需要partial方法,因为你没有处理嵌套结构。
如果你正在处理一个嵌套对象,使用partial还是deepPartial取决于你,如下所示。
对于partial和deepPartial方法,location字段将是可选的(即,可空)。但是使用partial方法还是deepPartial方法取决于在提供location字段时是否需要houseNo和country字段。
注意:也可以只将选定字段设为空