Search code examples
javascripttypescriptzod

Do not allow extra properties with zod parse


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?


Solution

  • You can use the strict option:

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