@traversable/schema
    Preparing search index...

    Function defaultValue

    • 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 extends
            | $ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>
            | ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>

      Parameters

      • type: T

      Returns defaultValue<output<T>>

      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 }
      }
      }
      )
    • 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 extends
            | $ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>
            | ZodType<unknown, unknown, $ZodTypeInternals<unknown, unknown>>
      • Leaves extends Fallbacks

      Parameters

      Returns defaultValue<output<T>, Leaves[keyof Leaves]>

      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 }
      }
      }
      )
    Index

    Properties

    Properties

    defaults: {
        fallbacks: {
            any: undefined;
            bigint: undefined;
            boolean: undefined;
            date: undefined;
            file: undefined;
            literal: undefined;
            nan: undefined;
            never: undefined;
            null: undefined;
            number: undefined;
            string: undefined;
            symbol: undefined;
            template_literal: undefined;
            undefined: undefined;
            unknown: undefined;
            void: undefined;
        };
        unionTreatment: "pickFirst";
    }