使用泛型而不将它们声明为参数

时间:2018-01-30 17:03:12

标签: typescript redux

我正在编写一些带有简化版本的redux中间件:

const api = {
  createStuff (params: object): Promise<{someAttr: true}> { ... }
}

export const createChannel = (params: object): ApiAction => {
    return {
        transform: (payload) => ({ ...payload, anotherField: 123 }), // Here I would like to be able to autocomplete the someAttr specified in the function signature above
        call: (api) => api.createStuff(params) // the above api object is injected here by the middleware
    };
};

中间件将获取call函数的结果并将其传递给transform回调。

我想根据payload函数的函数签名自动推断要转换createStuff的类型

我认为我会做类似

的事情

我有以下界面

export interface ApiAction<R> {
    transform? (R): object
    callApi (object): Promise<R>
}

但在这里我需要明确声明R类型。我宁愿自动推断

这可能吗?

0 个答案:

没有答案