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)[] ? ReRequired[] : T[P] extends ReadonlyArray ? ReadonlyArray> : T[P] extends object ? ReRequired : T[P]; }; /** * 防止swc下循环依赖报错 */ declare type WrapperType = T;