Redux Toolkit使用reducers报错:CreateSliceOptions类型无reducers属性
解决Redux Toolkit中
reducers类型错误问题 你遇到的'reducers' does not exist in type 'CreateSliceOptions<unknown, SliceCaseReducers<unknown>, string>'错误,本质是TypeScript无法正确识别createSlice配置中的reducers字段,通常由依赖版本、类型推断或TS配置问题导致,以下是具体解决方法:
1. 升级Redux Toolkit到最新稳定版
旧版本的Redux Toolkit可能存在类型定义缺陷,直接升级到最新版大概率能解决问题:
npm install @reduxjs/toolkit@latest # 或用yarn yarn add @reduxjs/toolkit@latest
2. 修复类型推断,避免滥用any
你代码里的reducer函数把state和action都设为any,完全破坏了TypeScript的类型推断,应该让RTK自动推导类型,或显式指定action的payload类型:
import { createSlice, PayloadAction } from "@reduxjs/toolkit"; interface IPermission {} interface IState { userPermissions: IPermission[]; } export const initialState: IState = { userPermissions: localStorage.getItem("token") ? [] : [], }; export const permissionSlice = createSlice({ name: "permissions", initialState, reducers: { // 用PayloadAction明确指定payload的类型 addPermission: (state, action: PayloadAction<IPermission[]>) => { state.userPermissions = action.payload; }, }, }); export const { addPermission } = permissionSlice.actions; export default permissionSlice.reducer;
3. 检查并调整TypeScript配置
确保你的tsconfig.json中开启了严格模式相关配置,这能帮助TypeScript正确推断类型:
{ "compilerOptions": { "strict": true, "noImplicitAny": true // 其他配置... } }
4. 清理依赖缓存(若上述方法无效)
如果升级依赖后问题仍存在,可尝试清理缓存重新安装:
- 删除项目根目录下的
node_modules文件夹和package-lock.json(或yarn.lock) - 执行
npm install(或yarn install)重新安装所有依赖
内容的提问来源于stack exchange,提问作者Rocky
相关产品推荐
相关产品推荐

