UNPKG

@backland/schema

Version:

TypeScript schema declaration and validation library with static type inference

9 lines (8 loc) 757 B
import { Merge } from '@backland/utils'; import { ObjectType } from './ObjectType'; import { ObjectLike } from './fields/IObjectLike'; import { ObjectDefinitionInput } from './fields/_parseFields'; export type ImplementObject<Dest, Extends> = Extends extends [] ? Dest : Extends extends [infer Item, ...infer Rest] ? Dest extends ObjectType<infer DestDef> ? Item extends ObjectType<infer ItemDef> ? ImplementObject<ObjectType<{ [K in keyof Merge<ItemDef, DestDef>]: Merge<ItemDef, DestDef>[K]; }>, Rest> : never : never : never; export declare function implementObject<Def extends ObjectDefinitionInput, Parents extends ReadonlyArray<ObjectLike>>(name: string, definition: Readonly<Def>, ...parents: Parents): ImplementObject<ObjectType<Def>, Parents>;