类型“MyType”不可分配给类型“WritableDraft<MyType>”

Żyw*_*ywy 10 typescript immer.js redux-toolkit

我使用@reduxjs/toolkit并且我的状态包含:allSlides: ISlide[];

当我尝试改变任何事情时,allSlides比如前。

setAllSlides(state, action: PayloadAction<ISlide[]>) {
  state.allSlides = action.payload;
},
storeNewSlide(state, action: PayloadAction<ISlide>) {
  state.allSlides.push(action.payload);
},
Run Code Online (Sandbox Code Playgroud)

我收到 TS 错误

Type 'ISlide' is not assignable to type 'WritableDraft<ISlide>'
Run Code Online (Sandbox Code Playgroud)

我对更改原始值数组或仅对象中的一个属性没有问题,但我不知道如何正确更改整个数组或数组中的特定对象。

Mar*_*ian 2

您必须在操作中添加类型

IE:

export const storeNewSlide = createAsyncThunk(
  "slides/storeNewSlide",
  async (slide: ISlide) => {
    return {
      slide,
    };
  }
);
Run Code Online (Sandbox Code Playgroud)

然后在你的allSlides

storeNewSlide(state, action: PayloadAction<ISlide>) {
  state.allSlides.push(action.payload.slide);
},
Run Code Online (Sandbox Code Playgroud)

幻灯片数组也是如此