Hi there! Are you looking for the official Deno documentation? Try docs.deno.com for all your Deno learning needs.

z.ZodDiscriminatedUnion

import { z } from "https://esm.sh/zod@3.25.76/index.d.cts"; 

const { ZodDiscriminatedUnion } = z;
class ZodDiscriminatedUnion<Discriminator extends string, Options extends readonly ZodDiscriminatedUnionOption<Discriminator>[]> extends ZodType<output<Options[number]>, ZodDiscriminatedUnionDef<Discriminator, Options>, input<Options[number]>> {
get discriminator(): Discriminator;
get options(): Options;
get optionsMap(): Map<Primitive, ZodDiscriminatedUnionOption<any>>;
 
_parse(input: ParseInput): ParseReturnType<this["_output"]>;
 
static create<Discriminator extends string, Types extends readonly [ZodDiscriminatedUnionOption<Discriminator>, ...ZodDiscriminatedUnionOption<Discriminator>[]]>(
discriminator: Discriminator,
options: Types,
params?: RawCreateParams,
): ZodDiscriminatedUnion<Discriminator, Types>;
}

§Type Parameters

§
Discriminator extends string
[src]
§
Options extends readonly ZodDiscriminatedUnionOption<Discriminator>[]
[src]

§Extends

§
ZodType<output<Options[number]>, ZodDiscriminatedUnionDef<Discriminator, Options>, input<Options[number]>>
[src]

§Properties

§
discriminator: Discriminator readonly
[src]
§
options: Options readonly
[src]
§
optionsMap: Map<Primitive, ZodDiscriminatedUnionOption<any>> readonly
[src]

§Methods

§
_parse(input: ParseInput): ParseReturnType<this["_output"]>
[src]

§Static Methods

§
create<Discriminator extends string, Types extends readonly [ZodDiscriminatedUnionOption<Discriminator>, ...ZodDiscriminatedUnionOption<Discriminator>[]]>(discriminator: Discriminator, options: Types, params?: RawCreateParams): ZodDiscriminatedUnion<Discriminator, Types>
[src]

The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor. However, it only allows a union of objects, all of which need to share a discriminator property. This property must have a different value for each object in the union.

@param discriminator

the name of the discriminator property

@param types

an array of object schemas

@param params