You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Redux Toolkit+TypeScript报错:Property 'push'不存在于WritableDraft<CartState>

解决Redux Toolkit + TypeScript中push不存在的类型错误

你报错的核心原因是state的类型是WritableDraft<CartState>——也就是你定义的包含products数组的对象,而非数组本身,因此无法直接对state调用push方法。

修复方案很简单:你需要操作的是state下的products数组属性,而非state对象本身。修改后的完整代码如下:

import { createSlice, PayloadAction } from '@reduxjs/toolkit'
import { Product } from '../pages/Product/Types'

export interface CartState {
  products: Product[]
}

const initialState: CartState = {
  products: []
}

export const cartSlice = createSlice({
  name: 'cart',
  initialState,
  reducers: {
    addToCart: (state, action: PayloadAction<Product>) => {
      // 改为操作state.products数组
      state.products.push(action.payload)
    }
  }
})

export const { addToCart } = cartSlice.actions

export default cartSlice.reducer

Redux Toolkit内置的Immer会自动将这种“可变”的数组操作(比如push)转换为符合Redux要求的不可变更新,完全符合规范。

内容的提问来源于stack exchange,提问作者mattBurnett

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 07:02:06