@@ -24,6 +24,7 @@ import { executeReducerBuilderCallback } from './mapBuilders'
2424import type { Id , TypeGuard , UnionToIntersection } from './tsHelpers'
2525import type { InjectConfig } from './combineSlices'
2626import { emplace } from './utils'
27+ import { DistributiveOmit } from 'react-redux'
2728
2829export enum ReducerType {
2930 reducer = 'reducer' ,
@@ -75,23 +76,23 @@ export interface SliceReducerCreators<
7576 } ,
7677 {
7778 actions : {
78- [ ReducerName in keyof CaseReducers as CaseReducers [ ReducerName ] extends CaseReducer <
79+ [ ReducerName in keyof CaseReducers ] : CaseReducers [ ReducerName ] extends CaseReducer <
7980 State ,
8081 any
8182 >
82- ? ReducerName
83- : never ] : ActionCreatorForCaseReducer <
84- CaseReducers [ ReducerName ] ,
85- SliceActionType < Name , ReducerName >
86- >
83+ ? ActionCreatorForCaseReducer <
84+ CaseReducers [ ReducerName ] ,
85+ SliceActionType < Name , ReducerName >
86+ >
87+ : never
8788 }
8889 caseReducers : {
89- [ ReducerName in keyof CaseReducers as CaseReducers [ ReducerName ] extends CaseReducer <
90+ [ ReducerName in keyof CaseReducers ] : CaseReducers [ ReducerName ] extends CaseReducer <
9091 State ,
9192 any
9293 >
93- ? ReducerName
94- : never ] : CaseReducers [ ReducerName ]
94+ ? CaseReducers [ ReducerName ]
95+ : never
9596 }
9697 }
9798 >
@@ -105,26 +106,26 @@ export interface SliceReducerCreators<
105106 ) => PreparedCaseReducerDefinition < State , Prepare > ,
106107 {
107108 actions : {
108- [ ReducerName in keyof CaseReducers as CaseReducers [ ReducerName ] extends CaseReducerWithPrepare <
109+ [ ReducerName in keyof CaseReducers as ReducerName ] : CaseReducers [ ReducerName ] extends CaseReducerWithPrepare <
109110 State ,
110111 any
111112 >
112- ? ReducerName
113- : never ] : CaseReducers [ ReducerName ] extends { prepare : any }
114- ? ActionCreatorForCaseReducerWithPrepare <
115- CaseReducers [ ReducerName ] ,
116- SliceActionType < Name , ReducerName >
117- >
113+ ? CaseReducers [ ReducerName ] extends { prepare : any }
114+ ? ActionCreatorForCaseReducerWithPrepare <
115+ CaseReducers [ ReducerName ] ,
116+ SliceActionType < Name , ReducerName >
117+ >
118+ : never
118119 : never
119120 }
120121 caseReducers : {
121- [ ReducerName in keyof CaseReducers as CaseReducers [ ReducerName ] extends CaseReducerWithPrepare <
122+ [ ReducerName in keyof CaseReducers ] : CaseReducers [ ReducerName ] extends CaseReducerWithPrepare <
122123 State ,
123124 any
124125 >
125- ? ReducerName
126- : never ] : CaseReducers [ ReducerName ] extends { reducer : infer Reducer }
127- ? Reducer
126+ ? CaseReducers [ ReducerName ] extends { reducer : infer Reducer }
127+ ? Reducer
128+ : never
128129 : never
129130 }
130131 }
@@ -133,10 +134,7 @@ export interface SliceReducerCreators<
133134 AsyncThunkCreator < State > ,
134135 {
135136 actions : {
136- [ ReducerName in ReducerNamesOfType <
137- CaseReducers ,
138- ReducerType . asyncThunk
139- > ] : CaseReducers [ ReducerName ] extends AsyncThunkSliceReducerDefinition <
137+ [ ReducerName in keyof CaseReducers ] : CaseReducers [ ReducerName ] extends AsyncThunkSliceReducerDefinition <
140138 State ,
141139 infer ThunkArg ,
142140 infer Returned ,
@@ -146,10 +144,7 @@ export interface SliceReducerCreators<
146144 : never
147145 }
148146 caseReducers : {
149- [ ReducerName in ReducerNamesOfType <
150- CaseReducers ,
151- ReducerType . asyncThunk
152- > ] : CaseReducers [ ReducerName ] extends AsyncThunkSliceReducerDefinition <
147+ [ ReducerName in keyof CaseReducers ] : CaseReducers [ ReducerName ] extends AsyncThunkSliceReducerDefinition <
153148 State ,
154149 any ,
155150 any ,
@@ -631,6 +626,10 @@ export type SliceActionType<
631626 ActionName extends keyof any ,
632627> = ActionName extends string | number ? `${SliceName } /${ActionName } ` : string
633628
629+ type ConvertNeverKeysToUnknown < T > = T extends any
630+ ? { [ K in keyof T ] : T [ K ] extends never ? unknown : T [ K ] }
631+ : never
632+
634633/**
635634 * Derives the slice's `actions` property from the `reducers` options
636635 *
@@ -642,11 +641,13 @@ export type CaseReducerActions<
642641 State = any ,
643642> = Id <
644643 UnionToIntersection <
645- SliceReducerCreators <
646- State ,
647- CaseReducers ,
648- SliceName
649- > [ RegisteredReducerType ] [ 'actions' ]
644+ ConvertNeverKeysToUnknown <
645+ SliceReducerCreators <
646+ State ,
647+ CaseReducers ,
648+ SliceName
649+ > [ RegisteredReducerType ] [ 'actions' ]
650+ >
650651 >
651652>
652653
@@ -686,11 +687,13 @@ type SliceDefinedCaseReducers<
686687 State = any ,
687688> = Id <
688689 UnionToIntersection <
689- SliceReducerCreators <
690- State ,
691- CaseReducers ,
692- SliceName
693- > [ RegisteredReducerType ] [ 'caseReducers' ]
690+ ConvertNeverKeysToUnknown <
691+ SliceReducerCreators <
692+ State ,
693+ CaseReducers ,
694+ SliceName
695+ > [ RegisteredReducerType ] [ 'caseReducers' ]
696+ >
694697 >
695698>
696699
0 commit comments