13

I'm using zod for validation. It seems like if I define a schema and then parse() some input with some extra properties that aren't even in the schema, zod parses the input as valid but just removes those keys.

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 })) 

However, extra input properties is not something I'd like to ignore, instead I'd like to throw a useful error when that happens, reporting the keys of the extra properties.

Is there a way to do that with zod?

davnicwil
  • 28,487
  • 16
  • 107
  • 123

1 Answers1

26

You can use the strict option:

const schema = z.object({
  foo: z.string(),
  bar: z.number()      
}).strict();
nemesv
  • 138,284
  • 16
  • 416
  • 359