jav*_*oob 0 middleware typescript redux redux-observable redux-toolkit
设置中间件时出现以下错误。使用 Redux observable/Redux 工具包。关于为什么会发生这种情况有任何意见吗?
遵循以下回购协议设置。 https://github.com/beast911/react-redux-observables-typescript
import systemReducer, {
getInfoStart,
getInfoSuccess,
getInfoFailed,
addInfoStart,
addInfoSuccess,
addInfoFailed,
editInfoStart,
editInfoSuccess,
editInfoFailed,
deleteInfoStart,
deleteInfoSuccess,
deleteInfoFailed,
completeInfoStart,
completeInfoSuccess,
completeInfoFailed,
} from "./system/slice";
import {
combineReducers,
configureStore,
getDefaultMiddleware,
} from "@reduxjs/toolkit";
import { createBrowserHistory } from "history";
import { combineEpics, createEpicMiddleware } from "redux-observable";
import {
getInfoEpic,
addInfoEpic,
completeInfoEpic,
deleteInfoEpic,
editInfoEpic,
} from "./system/epics";
import { ActionType } from "typesafe-actions";
import {
connectRouter,
routerMiddleware,
RouterState,
} from "connected-react-router";
type SystemActionsWithPayload =
| typeof getInfoStart
| typeof getInfoSuccess
| typeof getInfoFailed
| typeof addInfoStart
| typeof addInfoSuccess
| typeof addInfoFailed
| typeof editInfoStart
| typeof editInfoSuccess
| typeof editInfoFailed
| typeof deleteInfoStart
| typeof deleteInfoSuccess
| typeof deleteInfoFailed
| typeof completeInfoStart
| typeof completeInfoSuccess
| typeof completeInfoFailed;
type SystemActions = ActionType<SystemActionsWithPayload>;
type finalActions = SystemActions;
const epics = combineEpics(
getInfoEpic,
addInfoEpic,
completeInfoEpic,
deleteInfoEpic,
editInfoEpic
);
export const history = createBrowserHistory<RouterState>();
export const rootReducer = combineReducers({
router: connectRouter(history),
system: systemReducer,
});
export type RootState = ReturnType<typeof rootReducer>;
const epicMiddleware = createEpicMiddleware<
finalActions, // input actions
finalActions, // output actions
RootState
>();
function configureAppStore(initialState?: any) {
// configure middlewares
const middlewares = [routerMiddleware(history), epicMiddleware];
// create store
return configureStore<RootState>({
reducer: rootReducer,
middleware: middlewares,
preloadedState: initialState,
});
}
export const store = configureAppStore();
epicMiddleware.run(epics);
Run Code Online (Sandbox Code Playgroud)
类型“Middleware<{}, any, Dispatch>[]”不可分配给类型“[ThunkMiddleware<CombinedState<{ router: RouterState<RouterState>;” 系统:任务状态;}>, AnyAction, null> | ThunkMiddleware<...>] | ((getDefaultMiddleware: CurriedGetDefaultMiddleware<...>) => [...]) | 不明确的'。类型“Middleware<{}, any, Dispatch>[]”中缺少属性“0”,但类型“[ThunkMiddleware<CombinedState<{ router: RouterState<RouterState>;”中需要属性“0” 系统:任务状态;}>, AnyAction, null> | ThunkMiddleware<...>]'
大多数 Redux Toolkit api 不应使用手动指定的泛型来调用。
通过调用,return configureStore<RootState>(...您实际上会从商店中删除有关中间件的所有信息。跳过泛型,只需调用return configureStore(...并让 TypeScript 从使用中推断出正确的类型。