diff --git a/packages/toolkit/src/combineSlices.ts b/packages/toolkit/src/combineSlices.ts index f045f14f17..1229084799 100644 --- a/packages/toolkit/src/combineSlices.ts +++ b/packages/toolkit/src/combineSlices.ts @@ -121,7 +121,7 @@ export interface CombinedSliceReducer< config?: InjectConfig, ): CombinedSliceReducer< InitialState, - Id>> + Id>> > /** diff --git a/packages/toolkit/src/tests/combineSlices.test-d.ts b/packages/toolkit/src/tests/combineSlices.test-d.ts index 6b773a5d54..5a7927fc84 100644 --- a/packages/toolkit/src/tests/combineSlices.test-d.ts +++ b/packages/toolkit/src/tests/combineSlices.test-d.ts @@ -186,4 +186,21 @@ describe('type tests', () => { (rootState: RootState, num: number) => rootState.inner, ) }) + + test('correct type of state is inferred when not declared via `withLazyLoadedSlices`', () => { + // Related to https://github.com/reduxjs/redux-toolkit/issues/4171 + + const combinedReducer = combineSlices(stringSlice) + + const withNumber = combinedReducer.inject(numberSlice) + + expectTypeOf(withNumber).returns.toEqualTypeOf<{ + string: string + number: number + }>() + + expectTypeOf(withNumber(undefined, { type: '' }).number).toMatchTypeOf< + number + >() + }) })