UNPKG

veffect

Version:

powerful TypeScript validation library built on the robust foundation of Effect combining exceptional type safety, high performance, and developer experience. Taking inspiration from Effect's functional principles, VEffect delivers a balanced approach tha

24 lines (23 loc) 1.01 kB
/** * Discriminated Union Schema implementation */ import { Schema } from '../types'; export interface DiscriminatedUnionSchema<T> extends Schema<T> { readonly _tag: 'DiscriminatedUnionSchema'; } /** * Creates a discriminated union schema that validates and handles union types based on a discriminator property * * @param discriminator The property that determines which schema to use * @param schemas Array of object schemas that each have the discriminator property * @returns A schema that validates against the appropriate union member based on the discriminator * * @example * const userSchema = discriminatedUnion('type', [ * object({ type: literal('admin'), permissions: array(string()) }), * object({ type: literal('user'), role: string() }) * ]); */ export declare function discriminatedUnion<D extends string, S extends Schema<any>[], T = { [K in number]: S[K] extends Schema<infer U> ? U : never; }[number]>(discriminator: D, schemas: S): DiscriminatedUnionSchema<T>;