type-tls
Version:
type-tls 封装了与类型相关的工具,比如:获取数据的类型 或 类型名字、判断数据的类型 等
29 lines (28 loc) • 1.08 kB
TypeScript
/**
* 获取 Promise 解决的类型的值
* @remarks
* 对于非 Promise 类型的值,返回原类型本身
*/
export type ResolveData<P> = P extends Promise<infer D> ? D : P;
/**
* waitAsyncable 的返回值的类型
*/
export type WaitAsyncableReturn<Result, Return> = Return extends Promise<any> ? Return : (Result extends Promise<any> ? Promise<Return> : Return);
/**
* waitAsyncable 的回调函数的类型
* @param result - 同步的结果
* @param rejected - 异步是否被拒绝
*/
export type WaitAsyncableCallback<Result, Return> = (result: ResolveData<Result> | undefined, rejected: boolean, error: any) => Return;
/**
* 等待可异步的结果
*
* @remarks
* 当 asyncable 为同步值时,会同步调用 callback。
* 当 asyncable 为异步值时,会等待 asyncable 解决后再调用 callback。
*
* @param asyncable - 可异步的结果
* @param callback
* @returns
*/
export declare function waitAsyncable<Result, Return>(asyncable: Result, callback: WaitAsyncableCallback<Result, Return>): WaitAsyncableReturn<Result, Return>;