在组合中按名称对reducers-Redux-Typescript中的reducer键进行排序



我有很多redux reducer,在将其发送到商店之前,它们会被传递到combineRreducer中。在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, cur) => ({ ...acc, [cur]: reducers[cur] }), {})
);

错误为

TS2345:类型为"{}"的参数不可分配给类型为"ReducersMapObject<RootState,PayloadAction<quot@user/setCurrentUser";,AD用户>|PayloadAction<quot@profile/setProfile";,配置文件>|PayloadAction<quot@client/setClients";,ClientMap>|。。。还有81个…|PayloadAction<gt>'。类型"{}"缺少类型"ReducersMapObject<RootState,PayloadAction<quot@user/setCurrentUser";,AD用户>|PayloadAction<quot@profile/setProfile";,配置文件>|PayloadAction<quot@client/setClients";,ClientMap>|。。。还有81个…|PayloadAction<gt>':currentUser、个人资料、客户、型号和22个更多信息。

请提供建议。

使用修复

const sortedReducers = Object.keys(reducers)
.sort()
.reduce((acc, cur) => ({ ...acc, [cur]: reducers[cur] }), {});
export default combineReducers<RootState, RootAction>(
sortedReducers as typeof reducers
);

最新更新