@@ -175,6 +175,65 @@ function expectType<T>(t: T) {
175
175
expectType < string > ( counter . actions . concatMetaStrLen ( 'test' ) . meta )
176
176
}
177
177
178
+ /**
179
+ * Test: access meta and error from reducer
180
+ */
181
+ {
182
+ const counter = createSlice ( {
183
+ name : 'test' ,
184
+ initialState : { counter : 0 , concat : '' } ,
185
+ reducers : {
186
+ // case: meta and error not used in reducer
187
+ testDefaultMetaAndError : {
188
+ reducer ( _ , action : PayloadAction < number , string > ) { } ,
189
+ prepare : ( payload : number ) => ( {
190
+ payload,
191
+ meta : 'meta' as 'meta' ,
192
+ error : 'error' as 'error'
193
+ } )
194
+ } ,
195
+ // case: meta and error marked as "unknown" in reducer
196
+ testUnknownMetaAndError : {
197
+ reducer ( _ , action : PayloadAction < number , string , unknown , unknown > ) { } ,
198
+ prepare : ( payload : number ) => ( {
199
+ payload,
200
+ meta : 'meta' as 'meta' ,
201
+ error : 'error' as 'error'
202
+ } )
203
+ } ,
204
+ // case: meta and error are typed in the reducer as returned by prepare
205
+ testMetaAndError : {
206
+ reducer ( _ , action : PayloadAction < number , string , 'meta' , 'error' > ) { } ,
207
+ prepare : ( payload : number ) => ( {
208
+ payload,
209
+ meta : 'meta' as 'meta' ,
210
+ error : 'error' as 'error'
211
+ } )
212
+ } ,
213
+ // case: meta is typed differently in the reducer than returned from prepare
214
+ testErroneousMeta : {
215
+ // typings:expect-error
216
+ reducer ( _ , action : PayloadAction < number , string , 'meta' , 'error' > ) { } ,
217
+ prepare : ( payload : number ) => ( {
218
+ payload,
219
+ meta : 1 ,
220
+ error : 'error' as 'error'
221
+ } )
222
+ } ,
223
+ // case: error is typed differently in the reducer than returned from prepare
224
+ testErroneousError : {
225
+ // typings:expect-error
226
+ reducer ( _ , action : PayloadAction < number , string , 'meta' , 'error' > ) { } ,
227
+ prepare : ( payload : number ) => ( {
228
+ payload,
229
+ meta : 'meta' as 'meta' ,
230
+ error : 1
231
+ } )
232
+ }
233
+ }
234
+ } )
235
+ }
236
+
178
237
/*
179
238
* Test: returned case reducer has the correct type
180
239
*/
0 commit comments