Skip to content

Commit d2d0f70

Browse files
authored
Merge pull request #3054 from reduxjs/pr/fix-caseReducer-inference
2 parents 0ed008f + 8beef87 commit d2d0f70

File tree

2 files changed

+9
-8
lines changed

2 files changed

+9
-8
lines changed

packages/toolkit/src/createReducer.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ export type ActionMatcherDescriptionCollection<S> = Array<
5555
export type CaseReducer<S = any, A extends Action = AnyAction> = (
5656
state: Draft<S>,
5757
action: A
58-
) => S | void | Draft<S>
58+
) => NoInfer<S> | void | Draft<NoInfer<S>>
5959

6060
/**
6161
* A mapping from action types to case reducers for `createReducer()`.

packages/toolkit/src/tests/createSlice.typetest.ts

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -59,21 +59,22 @@ const value = actionCreators.anyKey
5959
increment: (state: number, action) => state + action.payload,
6060
decrement: (state: number, action) => state - action.payload,
6161
},
62-
extraReducers: {
63-
[firstAction.type]: (state: number, action) =>
64-
state + action.payload.count,
62+
extraReducers: (builder) => {
63+
builder.addCase(
64+
firstAction,
65+
(state, action) => state + action.payload.count
66+
)
6567
},
6668
})
6769

6870
/* Reducer */
6971

70-
const reducer: Reducer<number, PayloadAction> = slice.reducer
72+
expectType<Reducer<number, PayloadAction>>(slice.reducer)
7173

7274
// @ts-expect-error
73-
const stringReducer: Reducer<string, PayloadAction> = slice.reducer
75+
expectType<Reducer<string, PayloadAction>>(slice.reducer)
7476
// @ts-expect-error
75-
const anyActionReducer: Reducer<string, AnyAction> = slice.reducer
76-
77+
expectType<Reducer<string, AnyAction>>(slice.reducer)
7778
/* Actions */
7879

7980
slice.actions.increment(1)

0 commit comments

Comments
 (0)