TypeScript 错误 - Redux 中间件 属性 0
TypeScript Error - Redux Middleware property 0
我在设置中间件时遇到以下错误。使用 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);
Type 'Middleware<{}, any, Dispatch>[]' is not assignable to type '[ThunkMiddleware<CombinedState<{ router: RouterState<RouterState>; system: TaskState; }>, AnyAction, null> | ThunkMiddleware<...>] | ((getDefaultMiddleware: CurriedGetDefaultMiddleware<...>) => [...]) | undefined'.
Property '0' is missing in type 'Middleware<{}, any, Dispatch>[]' but required in type '[ThunkMiddleware<CombinedState<{ router: RouterState<RouterState>; system: TaskState; }>, AnyAction, null> | ThunkMiddleware<...>]'
不应使用手动指定的泛型调用大多数 Redux Toolkit api。
通过调用 return configureStore<RootState>(...
,您实际上从商店中删除了有关中间件的所有信息。跳过泛型,只需调用 return configureStore(...
并让 TypeScript 从用法中推断出正确的类型。
我在设置中间件时遇到以下错误。使用 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);
Type 'Middleware<{}, any, Dispatch>[]' is not assignable to type '[ThunkMiddleware<CombinedState<{ router: RouterState<RouterState>; system: TaskState; }>, AnyAction, null> | ThunkMiddleware<...>] | ((getDefaultMiddleware: CurriedGetDefaultMiddleware<...>) => [...]) | undefined'. Property '0' is missing in type 'Middleware<{}, any, Dispatch>[]' but required in type '[ThunkMiddleware<CombinedState<{ router: RouterState<RouterState>; system: TaskState; }>, AnyAction, null> | ThunkMiddleware<...>]'
不应使用手动指定的泛型调用大多数 Redux Toolkit api。
通过调用 return configureStore<RootState>(...
,您实际上从商店中删除了有关中间件的所有信息。跳过泛型,只需调用 return configureStore(...
并让 TypeScript 从用法中推断出正确的类型。