funval
Version:
A minimalist library for data validation using functions interfaces.
19 lines (18 loc) • 973 B
TypeScript
export declare type AnyType = any;
export declare type Primitive = string | number | symbol | boolean | null | undefined | void | bigint;
export declare type FunctionType<T = AnyType, A extends Array<AnyType> = AnyType> = (...args: A) => T;
export declare type ObjectProperty = string | number | symbol;
export declare type ResolvedValue<T> = T extends PromiseLike<infer R> ? R : T;
declare type OptionalKeys<T> = Exclude<{
[K in keyof T]: undefined extends T[K] ? AnyType extends T[K] ? never : K : never;
}[keyof T], undefined>;
declare type RequiredKeys<T> = Exclude<keyof T, OptionalKeys<T>>;
export declare type AllowPartial<T> = T extends object ? OptionalKeys<T> extends never ? {
[K in RequiredKeys<T>]: AllowPartial<T[K]>;
} : {
[K in RequiredKeys<T>]: AllowPartial<Exclude<T[K], undefined>>;
} & {
[K in OptionalKeys<T>]?: AllowPartial<T[K]>;
} : T;
export declare function isPromiseLike(value: unknown): value is PromiseLike<AnyType>;
export {};