@backland/schema
Version:
TypeScript schema declaration and validation library with static type inference
9 lines (8 loc) • 757 B
TypeScript
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>;