在CombineReducers中按名称对reducer键进行排序-Redux-Typescript

问题描述

我有很多redux减速器,在将其发送到商店之前已传递到CombineReducers中。在js中,我通常会执行以下操作并进行排序。请注意,这里的减速器是假的。

const reducers = {
    router: connectRouter(history),...c,...d,...a,}

export default combineReducers(
    Object.keys(reducers)
    .sort()
    .reduce((acc,cur) => ({ ...acc,[cur]: reducers[cur] }),{})
);

但是在打字稿中,如果我尝试做同样的事情,我实际上会遇到很多错误

export default combineReducers<RootState,RootAction>(
    Object.keys(reducers)
    .sort()
    .reduce((acc,{})
);

错误

TS2345:类型'{}'的参数不能分配给类型'ReducersMapObject 的参数| PayloadAction | PayloadAction | ... 81更多... | PayloadAction <...>>'。类型'{}'缺少类型'ReducersMapObject 中的以下属性| PayloadAction | PayloadAction | ... 81更多... | PayloadAction <...>>':currentUser,个人资料,客户端,模型以及另外22个。

请咨询。

解决方法

使用

修复
const sortedReducers = Object.keys(reducers)
  .sort()
  .reduce((acc,cur) => ({ ...acc,[cur]: reducers[cur] }),{});

export default combineReducers<RootState,RootAction>(
  sortedReducers as typeof reducers
);