Redux 工具包中缺少 ThunkDispatch 类型

Missing ThunkDispatch Types in Redux Toolkit

我正在尝试将 TypeScript 和 Redux Toolkit 安装到现有项目中。但是,我遇到了 configureStore 没有提供 ThunkDispatch 类型的问题,因此我无法在 dispatch.

中使用 createAsyncThunk 操作

为了验证这个理论,我创建了一个全新的 create-react-app 项目。它的 store.ts 文件具有以下内容:

import { configureStore, ThunkAction, Action } from '@reduxjs/toolkit';

export const store = configureStore({
  reducer: {
  },
});

export type AppDispatch = typeof store.dispatch;
export type RootState = ReturnType<typeof store.getState>;
export type AppThunk<ReturnType = void> = ThunkAction<
  ReturnType,
  RootState,
  unknown,
  Action<string>
>;

AppDispatch 具有以下类型:type AppDispatch = ThunkDispatch<any, undefined, AnyAction> & Dispatch<AnyAction>

但是,在我现有的项目中,当我有以下情况时:

import { configureStore } from "@reduxjs/toolkit";

export const store = configureStore({
  reducer: {},
});

export type AppDispatch = typeof store.dispatch;
export type RootState = ReturnType<typeof store.getState>;

AppDispatch 的类型只是 type AppDispatch = Dispatch<AnyAction>

这个项目有很多依赖,但我有以下:

"@reduxjs/toolkit": "^1.8.1",
"react-redux": "^8.0.1",
"typescript": "^4.6.4",

我没有 @types/react-redux 因为 8.0.0 的发行说明似乎表明这不再是必需的,因为该项目现在在 TypeScript 中。我查看了我的 package-lock.json,据我所知,没有竞争的 redux 版本,所以我很茫然。

为什么我缺少 ThunkDispatch 类型?

如果您的 package.json 明确声明了 redux,请务必将其至少更新到 4.0.0。