我有一个函数签名,我需要一堆函数来遵循它,如下所示:
type ActionCallback<R = any> = (param1: SpecificType, param2: OtherType) => Promise<R>基本上,参数的类型是定义良好的,它必须返回一个promise,但是promise解析成什么取决于函数。
我不需要在每次回调中都指定两个参数的类型,我只想指定变量符合ActionCallback,这样就可以推断参数的类型:
const callback1: ActionCallback = async (a,b) => ({state: b().form, stuff: a});
const callback2: ActionCallback = async e => e.name; // doesn't need second arg in some cases但是,这样做意味着不能推断泛型参数,因此我必须显式指定返回类型,或者让它缺省为any
有没有一种方法可以最小化我必须显式标记的类型数量,确保函数返回Promise,并从函数体中推断promise的解析?
发布于 2019-03-08 10:47:01
因为函数可以在它们的参数中推断泛型类型,所以一个简单的函数就可以得到这样的行为:
function MakeCallback<R>(callback: ActionCallback<R>): ActionCallback<R> {
return callback;
}
const callback1 = MakeCallback(async e => e.name); // now can infer the return as Promise<typeof e.name>https://stackoverflow.com/questions/55056008
复制相似问题