UNPKG

better-react-web-component

Version:
31 lines (30 loc) 1.36 kB
export declare const optional: { readonly string: 0; readonly number: 1; readonly boolean: 2; readonly event: 3; readonly json: 4; }; export declare const required: { readonly string: 20; readonly number: 21; readonly boolean: 22; readonly event: 23; readonly json: 24; }; type InferType<T> = T extends typeof optional.string ? string | undefined : T extends typeof optional.json ? Record<string, unknown> | undefined : T extends typeof optional.number ? number | undefined : T extends typeof optional.boolean ? boolean | undefined : T extends typeof optional.event ? ((e: { detail: any; }) => void) | undefined : T extends typeof required.string ? string : T extends typeof required.json ? Record<string, unknown> : T extends typeof required.number ? number : T extends typeof required.boolean ? boolean : T extends typeof required.event ? (e: { detail: any; }) => void : never; type Required<T> = { [K in keyof T as undefined extends T[K] ? K : never]?: T[K]; }; type Optional<T> = { [K in keyof T as undefined extends T[K] ? never : K]: T[K]; }; type MakeUndefinedOptional<T> = Required<T> & Optional<T>; export type InferProps<Props, Overwrite extends Record<string, any> = {}> = Omit<MakeUndefinedOptional<{ [K in keyof Props]-?: InferType<Props[K]>; }>, keyof Overwrite> & Overwrite; export {};