/**函数的第一个参数类型 */ export declare type $FirstArgument = T extends (arg1: infer U, ...args: any[]) => any ? U : any; /**函数的第二个参数类型 */ export declare type $SecondArgument = T extends (arg1: any, arg2: infer U, ...args: any[]) => any ? U : any; /**函数的第三个参数类型 */ export declare type $ThirdArgument = T extends (arg1: any, arg2: any, arg3: infer U, ...args: any[]) => any ? U : any; /**函数的所有参数类型 */ export declare type $AllArgument = T extends (...args: infer U) => any ? U : any; export declare type $GeneratorYieldType = G extends Generator ? Y : never; export declare type $GeneratorReturnType = G extends Generator ? Y : never; /**获取获取Promise内部的类型 */ export declare type $PromiseType = Awaited; export declare type $PromiseOne = PromiseLike>; /**获取获取异步函数返回类型的内部类型 */ export declare type $PromiseReturnType = T extends (...args: any) => infer P ? P extends PromiseLike ? R : P : never; export declare type $PromiseMaybe = T | PromiseLike; /**使用 S 里同样属性的值去填充 T 的所有属性 */ export declare type $FillKeys = { [P in keyof T]: S[P]; }; /**往一个数组前面面插入一个元素 */ export declare type $ArrayUnshift = ((a: A, ...b: T) => void) extends (...a: infer R) => void ? R : never; export declare type $ArrayShift = ((...a: T) => void) extends (a: any, ...b: infer R) => void ? R : never; /**往一个数组后面追加一个元素 */ export declare type $ArrayPush = $FillKeys<$ArrayUnshift, Record & T> extends infer ARR ? ARR extends any[] ? ARR : never : never; export declare type $ArrayPop = $FillKeys<$ArrayShift, T> extends infer ARR ? ARR extends any[] ? ARR : never : never; /**构造函数 */ export interface $Constructor { new (...args: any[]): T; } export interface $JSONAble { toJSON(): T; } export declare type $ToJSONType = T extends $JSONAble ? U : T; export declare type $EmptyObject = Record; export declare namespace $NodeJS { type Process = { env: { [key: string]: string; }; stderr: { isTTY: boolean; }; platform: string; version: string; versions: { v8: string; node: string; }; }; }