@backland/schema
Version:
TypeScript schema declaration and validation library with static type inference
13 lines (12 loc) • 481 B
TypeScript
import { NullableToPartial } from '@backland/utils';
import { $oparam, t } from './t';
export type $shape_def = {
[K: string]: $oparam;
};
export type $shape<T extends $shape_def, P1, P2> = T extends unknown ? P1 extends unknown ? P2 extends unknown ? NullableToPartial<{
[K in keyof _shape<T, P1, P2>]: _shape<T, P1, P2>[K];
} & {}> : never : never : never;
type _shape<T, P1, P2> = T extends $shape_def ? {
[K in keyof T]: t<T[K], P1, P2>;
} & {} : never;
export {};