首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用函数接口确保参数,但推断更具体的返回类型

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

Stack Overflow用户
提问于 2019-03-08 10:47:01
回答 1查看 39关注 0票数 0

我有一个函数签名,我需要一堆函数来遵循它,如下所示:

代码语言:javascript
运行
复制
type ActionCallback<R = any> = (param1: SpecificType, param2: OtherType) => Promise<R>

基本上,参数的类型是定义良好的,它必须返回一个promise,但是promise解析成什么取决于函数。

我不需要在每次回调中都指定两个参数的类型,我只想指定变量符合ActionCallback,这样就可以推断参数的类型:

代码语言:javascript
运行
复制
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的解析?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-08 10:47:01

因为函数可以在它们的参数中推断泛型类型,所以一个简单的函数就可以得到这样的行为:

代码语言:javascript
运行
复制
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>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55056008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档