@@ -94,22 +94,29 @@ type UnpackPayload<F, S> = UnpackEffectPayload<F, S> extends never
94
94
: UnpackReducerPayload < F , S >
95
95
: UnpackEffectPayload < F , S >
96
96
97
+ type PayloadMethodKeySet < M , S , SS extends keyof M > = {
98
+ [ key in SS ] : M [ key ] extends
99
+ | ( ( ) => Observable < EffectAction > )
100
+ | ( ( payload$ : Observable < any > ) => Observable < EffectAction > )
101
+ | ( ( payload$ : Observable < any > , state$ : Observable < S > ) => Observable < EffectAction > )
102
+ ? key
103
+ : M [ key ] extends ( ( ) => S ) | ( ( state : S ) => S ) | ( ( state : S , payload : any ) => S )
104
+ ? key
105
+ : M [ key ] extends ( ( state : Draft < S > ) => void ) | ( ( state : Draft < S > , payload : any ) => void )
106
+ ? key
107
+ : M [ key ] extends Observable < any >
108
+ ? key
109
+ : never
110
+ } [ SS ]
111
+
97
112
export type ActionMethodOfAyanami < M extends Ayanami < S > , S > = Pick <
98
- {
99
- [ key in keyof M ] : UnpackPayload < M [ key ] , S > extends never
100
- ? never
101
- : ActionMethod < UnpackPayload < M [ key ] , S > >
102
- } ,
103
- Exclude < keyof M , keyof Ayanami < S > >
113
+ { [ key in keyof M ] : ActionMethod < UnpackPayload < M [ key ] , S > > } ,
114
+ PayloadMethodKeySet < M , S , Exclude < keyof M , keyof Ayanami < S > > >
104
115
>
105
116
106
117
export type ActionOfAyanami < M extends Ayanami < S > , S > = Pick <
107
- {
108
- [ key in keyof M ] : UnpackPayload < M [ key ] , S > extends never
109
- ? never
110
- : ActionMethod < UnpackPayload < M [ key ] , S > , EffectAction >
111
- } ,
112
- Exclude < keyof M , keyof Ayanami < S > >
118
+ { [ key in keyof M ] : ActionMethod < UnpackPayload < M [ key ] , S > , EffectAction > } ,
119
+ PayloadMethodKeySet < M , S , Exclude < keyof M , keyof Ayanami < S > > >
113
120
>
114
121
115
122
export interface ObjectOf < T > {
0 commit comments