@traversable/schema
    Preparing search index...

    Type Alias defaultValue<T, TypeMap, M>

    defaultValue: unknown extends T
        ? 0 extends T & 1 ? M["any"] : M["unknown"]
        : [T] extends [never]
            ? M["never"]
            : T extends Primitive
                ? MatchPrimitive<T, M>
                : T extends Set<any>
                    ? Set<
                        defaultValue<ReturnType<(...) & (...)>["value"] & {}, TypeMap, M>,
                    >
                    : T extends Map<any, any>
                        ? Map<
                            defaultValue<({} & (...)[(...)])[0], TypeMap, M>,
                            defaultValue<({} & (...)[(...)])[1], TypeMap, M>,
                        >
                        : { [K in keyof T]: defaultValue<T[K], TypeMap, M> }

    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['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['unionTreatment'].

    Type Parameters

    • T
    • TypeMap = DefaultTypeMap
    • M extends MergeTypeMap<TypeMap> = MergeTypeMap<TypeMap>
    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 }
    }
    }
    )