diff --git a/deno/lib/__tests__/nonNullable.test.ts b/deno/lib/__tests__/nonNullable.test.ts index b0ee7263f..160212644 100644 --- a/deno/lib/__tests__/nonNullable.test.ts +++ b/deno/lib/__tests__/nonNullable.test.ts @@ -19,13 +19,21 @@ test("parses a number correctly using z.nonNullable(...)", () => { }); test("fails is passed null", () => { - const a = z.nullable(z.number()).nonNullable(); + const a = z.nullable(z.any()).nonNullable(); expect(() => { a.parse(null); }).toThrow(z.ZodError) }); +test("fails is passed undefined", () => { + const a = z.nullable(z.any()).nonNullable(); + + expect(() => { + a.parse(undefined); + }).toThrow(z.ZodError) +}); + test("unwrap", () => { const unwrapped = z.any().nonNullable().unwrap(); expect(unwrapped).toBeInstanceOf(z.ZodAny); diff --git a/deno/lib/types.ts b/deno/lib/types.ts index a8b326910..74f9590f1 100644 --- a/deno/lib/types.ts +++ b/deno/lib/types.ts @@ -4480,7 +4480,10 @@ export class ZodNonNullable extends ZodType< > { _parse(input: ParseInput): ParseReturnType { const parsedType = this._getType(input); - if (parsedType === ZodParsedType.null) { + if ( + parsedType === ZodParsedType.null || + parsedType === ZodParsedType.undefined + ) { const { ctx } = this._processInputParams(input); addIssueToContext(ctx, { code: ZodIssueCode.invalid_type, diff --git a/src/__tests__/nonNullable.test.ts b/src/__tests__/nonNullable.test.ts index 40993b41d..d8bf7c671 100644 --- a/src/__tests__/nonNullable.test.ts +++ b/src/__tests__/nonNullable.test.ts @@ -18,13 +18,21 @@ test("parses a number correctly using z.nonNullable(...)", () => { }); test("fails is passed null", () => { - const a = z.nullable(z.number()).nonNullable(); + const a = z.nullable(z.any()).nonNullable(); expect(() => { a.parse(null); }).toThrow(z.ZodError) }); +test("fails is passed undefined", () => { + const a = z.nullable(z.any()).nonNullable(); + + expect(() => { + a.parse(undefined); + }).toThrow(z.ZodError) +}); + test("unwrap", () => { const unwrapped = z.any().nonNullable().unwrap(); expect(unwrapped).toBeInstanceOf(z.ZodAny); diff --git a/src/types.ts b/src/types.ts index 6e3aae807..31b74deaf 100644 --- a/src/types.ts +++ b/src/types.ts @@ -4480,7 +4480,10 @@ export class ZodNonNullable extends ZodType< > { _parse(input: ParseInput): ParseReturnType { const parsedType = this._getType(input); - if (parsedType === ZodParsedType.null) { + if ( + parsedType === ZodParsedType.null || + parsedType === ZodParsedType.undefined + ) { const { ctx } = this._processInputParams(input); addIssueToContext(ctx, { code: ZodIssueCode.invalid_type,