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

dav*_*wil 16 javascript typescript zod

我正在使用它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 })) 
Run Code Online (Sandbox Code Playgroud)

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

有没有办法做到这一点zod

nem*_*esv 34

您可以使用严格选项:

const schema = z.object({
  foo: z.string(),
  bar: z.number()      
}).strict();
Run Code Online (Sandbox Code Playgroud)