@@ -24,6 +24,7 @@ import { executeReducerBuilderCallback } from './mapBuilders'
24
24
import type { Id , TypeGuard , UnionToIntersection } from './tsHelpers'
25
25
import type { InjectConfig } from './combineSlices'
26
26
import { emplace } from './utils'
27
+ import { DistributiveOmit } from 'react-redux'
27
28
28
29
export enum ReducerType {
29
30
reducer = 'reducer' ,
@@ -75,23 +76,23 @@ export interface SliceReducerCreators<
75
76
} ,
76
77
{
77
78
actions : {
78
- [ ReducerName in keyof CaseReducers as CaseReducers [ ReducerName ] extends CaseReducer <
79
+ [ ReducerName in keyof CaseReducers ] : CaseReducers [ ReducerName ] extends CaseReducer <
79
80
State ,
80
81
any
81
82
>
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
87
88
}
88
89
caseReducers : {
89
- [ ReducerName in keyof CaseReducers as CaseReducers [ ReducerName ] extends CaseReducer <
90
+ [ ReducerName in keyof CaseReducers ] : CaseReducers [ ReducerName ] extends CaseReducer <
90
91
State ,
91
92
any
92
93
>
93
- ? ReducerName
94
- : never ] : CaseReducers [ ReducerName ]
94
+ ? CaseReducers [ ReducerName ]
95
+ : never
95
96
}
96
97
}
97
98
>
@@ -105,26 +106,26 @@ export interface SliceReducerCreators<
105
106
) => PreparedCaseReducerDefinition < State , Prepare > ,
106
107
{
107
108
actions : {
108
- [ ReducerName in keyof CaseReducers as CaseReducers [ ReducerName ] extends CaseReducerWithPrepare <
109
+ [ ReducerName in keyof CaseReducers as ReducerName ] : CaseReducers [ ReducerName ] extends CaseReducerWithPrepare <
109
110
State ,
110
111
any
111
112
>
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
118
119
: never
119
120
}
120
121
caseReducers : {
121
- [ ReducerName in keyof CaseReducers as CaseReducers [ ReducerName ] extends CaseReducerWithPrepare <
122
+ [ ReducerName in keyof CaseReducers ] : CaseReducers [ ReducerName ] extends CaseReducerWithPrepare <
122
123
State ,
123
124
any
124
125
>
125
- ? ReducerName
126
- : never ] : CaseReducers [ ReducerName ] extends { reducer : infer Reducer }
127
- ? Reducer
126
+ ? CaseReducers [ ReducerName ] extends { reducer : infer Reducer }
127
+ ? Reducer
128
+ : never
128
129
: never
129
130
}
130
131
}
@@ -133,10 +134,7 @@ export interface SliceReducerCreators<
133
134
AsyncThunkCreator < State > ,
134
135
{
135
136
actions : {
136
- [ ReducerName in ReducerNamesOfType <
137
- CaseReducers ,
138
- ReducerType . asyncThunk
139
- > ] : CaseReducers [ ReducerName ] extends AsyncThunkSliceReducerDefinition <
137
+ [ ReducerName in keyof CaseReducers ] : CaseReducers [ ReducerName ] extends AsyncThunkSliceReducerDefinition <
140
138
State ,
141
139
infer ThunkArg ,
142
140
infer Returned ,
@@ -146,10 +144,7 @@ export interface SliceReducerCreators<
146
144
: never
147
145
}
148
146
caseReducers : {
149
- [ ReducerName in ReducerNamesOfType <
150
- CaseReducers ,
151
- ReducerType . asyncThunk
152
- > ] : CaseReducers [ ReducerName ] extends AsyncThunkSliceReducerDefinition <
147
+ [ ReducerName in keyof CaseReducers ] : CaseReducers [ ReducerName ] extends AsyncThunkSliceReducerDefinition <
153
148
State ,
154
149
any ,
155
150
any ,
@@ -631,6 +626,10 @@ export type SliceActionType<
631
626
ActionName extends keyof any ,
632
627
> = ActionName extends string | number ? `${SliceName } /${ActionName } ` : string
633
628
629
+ type ConvertNeverKeysToUnknown < T > = T extends any
630
+ ? { [ K in keyof T ] : T [ K ] extends never ? unknown : T [ K ] }
631
+ : never
632
+
634
633
/**
635
634
* Derives the slice's `actions` property from the `reducers` options
636
635
*
@@ -642,11 +641,13 @@ export type CaseReducerActions<
642
641
State = any ,
643
642
> = Id <
644
643
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
+ >
650
651
>
651
652
>
652
653
@@ -686,11 +687,13 @@ type SliceDefinedCaseReducers<
686
687
State = any ,
687
688
> = Id <
688
689
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
+ >
694
697
>
695
698
>
696
699
0 commit comments