不允许使用 zod parse 的额外属性

Do not allow extra properties with zod parse

我正在使用 zod 进行验证。似乎如果我定义一个架构,然后 parse() 一些带有一些甚至不在架构中的额外属性的输入,zod 将输入解析为有效但只是删除那些键。

import { z } from 'zod'

const schema = z.object({
  foo: z.string(),
  bar: z.number()      
})

// this validates fine, printing { foo: 'hello', bar: 1 }
console.log(schema.parse({ foo: 'hello', bar: 1, baz: true })) 

但是,我不想忽略额外的输入属性,相反,我想在发生这种情况时抛出一个有用的错误,报告额外属性的键。

有没有办法用 zod 做到这一点?

您可以使用 strict option:

const schema = z.object({
  foo: z.string(),
  bar: z.number()      
}).strict();