reduxjs / redux-toolkit

The official, opinionated, batteries-included toolset for efficient Redux development
https://redux-toolkit.js.org
MIT License
10.71k stars 1.17k forks source link

Destructuring reducer action parameter => Wrongly ActionCreatorWithOptionalPayload while strict is set to true #4559

Open RobIsHere opened 2 months ago

RobIsHere commented 2 months ago

I've seen all the other issues and double checked that "strict": true is in my tsconfig.json "typescript": "^4.9.5" with up to date create react app setup

This Works as part of a slice and the created action creator becomes ActionCreatorWithPayload

switchAccessory: (state, action: PayloadAction<{ item: Accessory; isSelected: boolean }>) => {
  if (action.payload.isSelected) {
    if (!state.accessories.some((x) => x.id === action.payload.item.id)) {
      // Add accessory if not already there
      state.accessories.push(action.payload.item);
    } else {
      // Add accessory if not already there
      state.accessories.push(action.payload.item);
    }
  }
},

This does not work and the action creator becomes ActionCreatorWithOptionalPayload

switchAccessory: (state, { payload }: PayloadAction<{ item: Accessory; isSelected: boolean }>) => {
  if (payload.isSelected) {
    if (!state.accessories.some((x) => x.id === payload.item.id)) {
      // Add accessory if not already there
      state.accessories.push(payload.item);
    } else {
      // Add accessory if not already there
      state.accessories.push(payload.item);
    }
  }
},
EskiMojo14 commented 2 months ago

I can't replicate this in the playground - does this happen when you run TSC, or just in your IDE? Which IDE are you using?

RobIsHere commented 2 months ago

Thanks for looking into this. The error was in both, on the webpack typescript compiler in the devserver. And additionally it was shown in VS Code.

I can try to make a reproduction, but it will take some time because I'm super busy with a tight work project timeline right now.