Detect if a schema has a default value by validating undefined.
Uses the Standard Schema ~standard.validate API to detect defaults.
If the schema accepts undefined and returns a value, that value is the default.
This approach is library-agnostic and works with any Standard Schema compliant library (Zod, Valibot, ArkType, etc.) without needing to introspect internals.
getSchemaDefaultGetter(schema: unknown): () => unknown | undefined| Name | Type | Description |
|---|---|---|
schema* | unknown | The schema to check for a default value. |
const getter = getSchemaDefaultGetter(z.string().default("hello"));
getter?.(); // "hello"
const noDefault = getSchemaDefaultGetter(z.string());
noDefault; // undefined