TypeScript 错误 - Redux 中间件属性 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,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);

类型 'Middleware[]' 不能分配给类型 '[ThunkMiddleware;系统:任务状态; }>,AnyAction,null> | ThunkMiddleware<...>] | ((getDefaultMiddleware: CurriedGetDefaultMiddleware<...>) => [...]) |不明确的'。 'Middleware[]' 类型中缺少属性 '0',但类型 '[ThunkMiddleware; 中需要属性 '0'系统:任务状态; }>,null> | ThunkMiddleware<...>]'

解决方法

不应使用手动指定的泛型调用大多数 Redux Toolkit api。

通过调用 initialText,您实际上会从您的商店中删除有关中间件的所有信息。跳过泛型,只需调用 return configureStore<RootState>(... 并让 TypeScript 从用法推断正确的类型。