首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Redux Promise中间件如何处理派单的退货类型?

Redux Promise中间件如何处理派单的退货类型?
EN

Stack Overflow用户
提问于 2018-07-27 01:18:01
回答 1查看 791关注 0票数 4

Redux Promise Middleware似乎可以处理操作负载的promise解析。例如,考虑使用Promise作为有效负载的操作创建者:

代码语言:javascript
复制
export default class ActionCreators {
  public static fetchAllUsers(): FetchAction {
    return {
      type: actionTypes.FETCH_ALL_USERS,
      payload: fetch("api.com/users")
    };
  }
}

使用此操作创建器时,TypeScript期望返回Action数据,而不是由于redux-promise-middleware而实际返回的Promise

因此下面的代码将不会编译,因为Property 'then' does not exist on type 'Action'.

代码语言:javascript
复制
dispatch(ActionCreators.fetchAllUsers())
    .then(response => {
        // do something with response
    })

Typescript期望返回像payloadtype这样的属性,这些属性实际上没有返回,因为promise已经被处理并且实际上已经被返回。

.then已经准备好可以使用了,但是typescript不会编译,因为它需要其他东西。

我猜问题是:如何编写正确的类型来处理redux-promise-中间件操作,同时为mapDispatchToProps等提供redux的connect-function和正确的调度类型。

EN

回答 1

Stack Overflow用户

发布于 2018-10-05 23:42:08

您可以使用条件类型。例如。

代码语言:javascript
复制
export interface BaseAction<TPayload> {
   type: string;
   payload: TPayload;
}

export interface Dispatch {
    <T extends BaseAction<any>>(action: T): 
         T extends BaseAction<Promise<infer R>> ? Promise<R>:  T

}

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51544320

复制
相关文章

相似问题

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