monorepo/apps/api/typings/global.d.ts

60 lines
1.5 KiB
TypeScript
Raw Normal View History

2024-06-25 21:59:50 +08:00
declare type RecordAny = Record<string, any>;
declare type RecordNever = Record<never, never>;
declare type RecordAnyOrNever = RecordAny | RecordNever;
/**
*
*/
declare type BaseType = boolean | number | string | undefined | null;
/**
*
*/
declare type ParseType<T extends BaseType = string> = (value: string) => T;
/**
*
*/
declare type ClassToPlain<T> = { [key in keyof T]: T[key] };
/**
*
*/
declare type ClassType<T> = { new (...args: any[]): T };
/**
*
*/
declare type RePartial<T> = {
[P in keyof T]?: T[P] extends (infer U)[] | undefined
? RePartial<U>[]
: T[P] extends object | undefined
? T[P] extends ((...args: any[]) => any) | ClassType<T[P]> | undefined
? T[P]
: RePartial<T[P]>
: T[P];
};
/**
*
*/
declare type ReRequired<T> = {
[P in keyof T]-?: T[P] extends (infer U)[] | undefined
? ReRequired<U>[]
: T[P] extends object | undefined
? T[P] extends ((...args: any[]) => any) | ClassType<T[P]> | undefined
? T[P]
: ReRequired<T[P]>
: T[P];
};
/**
* SWC
*/
declare type WrapperType<T> = T; // WrapperType === Relation
/**
*
*/
type IsEqual<T, U> = (T extends U ? true : false) & (U extends T ? true : false);