diff --git a/typings/global.d.ts b/typings/global.d.ts new file mode 100644 index 0000000..fa33ba1 --- /dev/null +++ b/typings/global.d.ts @@ -0,0 +1,33 @@ +declare type RecordAny = Record; +declare type RecordNever = Record; +declare type RecordAnyOrNever = RecordAny | RecordNever; + +declare type BaseType = boolean | number | string | undefined | null; + +declare type ParseType = (value: string) => T; + +declare type ClassToPlain = { [key in keyof T]: T[key] }; + +declare type ClassType = { new (...args: any[]): T }; + +declare type RePartial = { + [P in keyof T]: T[P] extends (infer U)[] | undefined + ? RePartial[] + : T[P] extends object | undefined + ? T[P] extends ((...args: any[]) => any) | ClassType | undefined + ? T[P] + : RePartial + : T[P]; +}; + +declare type ReRequired = { + [P in keyof T]-?: T[P] extends (infer U)[] | undefined + ? ReRequired[] + : T[P] extends object | undefined + ? T[P] extends ((...args: any[]) => any) | ClassType | undefined + ? T[P] + : ReRequired + : T[P]; +}; + +declare type WrapperType = T;