Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 使用函数接口确保参数,但推断更具体的返回类型_Typescript_Type Inference_Typescript Generics_Inferred Type - Fatal编程技术网

Typescript 使用函数接口确保参数,但推断更具体的返回类型

Typescript 使用函数接口确保参数,但推断更具体的返回类型,typescript,type-inference,typescript-generics,inferred-type,Typescript,Type Inference,Typescript Generics,Inferred Type,我有一个函数签名,我需要遵循一系列函数,如下所示: type ActionCallback<R = any> = (param1: SpecificType, param2: OtherType) => Promise<R> 但是,这样做意味着无法推断泛型参数,因此我必须显式指示返回类型,或者让它默认为any 有没有一种方法可以最大限度地减少我必须显式标记的类型,确保函数返回承诺并从函数体推断承诺的解析?由于函数可以在其参数中推断泛型类型,一个简单的环绕函数可以获

我有一个函数签名,我需要遵循一系列函数,如下所示:

type ActionCallback<R = any> = (param1: SpecificType, param2: OtherType) => Promise<R>
但是,这样做意味着无法推断泛型参数,因此我必须显式指示返回类型,或者让它默认为
any


有没有一种方法可以最大限度地减少我必须显式标记的类型,确保函数返回承诺并从函数体推断承诺的解析?

由于函数可以在其参数中推断泛型类型,一个简单的环绕函数可以获得此行为:

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>
函数MakeCallback(callback:ActionCallback):ActionCallback{
返回回调;
}
const callback1=MakeCallback(async e=>e.name);//现在可以推断出回报是承诺
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>