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。
我正在尝试将 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。