ts-cast
Version:
Runtime typechecking
9 lines (8 loc) • 415 B
TypeScript
import { Caster, CasterFn } from '../engine/types';
type CasterTuple<T extends any[]> = {
[K in keyof T]: CasterFn<T[K]>;
};
type Merge<T extends any[]> = T extends [infer A, ...infer B] ? A & Merge<B> : unknown;
export declare const allOf: <T extends any[]>(...schema: CasterTuple<T>) => Caster<Merge<T>>;
export declare const prod: <T extends any[]>(...schema: CasterTuple<T>) => Caster<Merge<T>>;
export {};