@traversable/schema
    Preparing search index...

    Type Alias defaultValue<T, Fallback>

    defaultValue: T extends Primitive
    | Atom
        ? T | Fallback
        : T extends Set<any>
            ? Set<
                defaultValue<
                    ReturnType<ReturnType<(...)>["return"] & {}>["value"] & {},
                    Fallback,
                >,
            >
            : T extends Map<any, any>
                ? Map<
                    defaultValue<({} & ReturnType<(...) & (...)>["value"])[0], Fallback>,
                    defaultValue<({} & ReturnType<(...) & (...)>["value"])[1], Fallback>,
                >
                : { [K in keyof T]-?: defaultValue<T[K], Fallback> }

    Derive a defaultValue from a zod schema (v4, classic).

    By default, zx.defaultValue returns undefined for primitive values.

    If you'd like to change that behavior, you can pass a set of fallbacks via Options Options['fallbacks']

    Unions are special cases -- by default, zx.defaultValue simply picks the first union, and generates a default value for it. You can configure this behavior via Options Options['unionTreatment'].

    Type Parameters

    • T
    • Fallback = undefined
    import * as vi from 'vitest'
    import { z } from 'zod'
    import { zx } from '@traversable/zod'

    const MySchema = z.object({
    abc: z.tuple([
    z.literal(123),
    z.set(z.array(z.number()))
    ]),
    def: z.string(),
    ghi: z.number(),
    jkl: z.boolean(),
    mno: z.optional(z.object({
    pqr: z.record(z.enum(['P', 'Q', 'R']), z.number()),
    }))
    })

    vi.assert.deepEqual(
    zx.defaultValue(MySchema), {
    abc: [123, new Set([[]])],
    def: undefined,
    ghi: undefined,
    jkl: undefined,
    mno: {
    pqr: { P: undefined, Q: undefined, R: undefined }
    }
    })

    vi.assert.deepEqual(
    zx.defaultValue(
    MySchema, {
    fallbacks: {
    number: 0,
    boolean: false,
    string: ''
    }
    }),
    {
    abc: [123, new Set([[]])],
    def: '',
    ghi: 0,
    jkl: false,
    mno: {
    pqr: { P: 0, Q: 0, R: 0 }
    }
    }
    )