Redux Promise Middleware似乎可以处理操作负载的promise解析。例如,考虑使用Promise作为有效负载的操作创建者:
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'.
dispatch(ActionCreators.fetchAllUsers())
.then(response => {
// do something with response
})Typescript期望返回像payload和type这样的属性,这些属性实际上没有返回,因为promise已经被处理并且实际上已经被返回。
.then已经准备好可以使用了,但是typescript不会编译,因为它需要其他东西。
我猜问题是:如何编写正确的类型来处理redux-promise-中间件操作,同时为mapDispatchToProps等提供redux的connect-function和正确的调度类型。
发布于 2018-10-05 23:42:08
您可以使用条件类型。例如。
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}
https://stackoverflow.com/questions/51544320
复制相似问题