1
1
import compose from './compose'
2
2
import { Middleware , MiddlewareAPI } from './types/middleware'
3
- import { AnyAction } from './types/actions'
4
- import { StoreEnhancer , StoreCreator , Dispatch } from './types/store'
5
- import { Reducer } from './types/reducers'
3
+ import {
4
+ Dispatch ,
5
+ StoreEnhancer ,
6
+ StoreEnhancerStoreCreator
7
+ } from './types/store'
6
8
7
9
/**
8
10
* Creates a store enhancer that applies middleware to the dispatch method
@@ -23,40 +25,17 @@ import { Reducer } from './types/reducers'
23
25
* @template Ext Dispatch signature added by a middleware.
24
26
* @template S The type of the state supported by a middleware.
25
27
*/
26
- export default function applyMiddleware ( ) : StoreEnhancer
27
- export default function applyMiddleware < Ext1 , S > (
28
- middleware1 : Middleware < Ext1 , S , any >
29
- ) : StoreEnhancer < { dispatch : Ext1 } >
30
- export default function applyMiddleware < Ext1 , Ext2 , S > (
31
- middleware1 : Middleware < Ext1 , S , any > ,
32
- middleware2 : Middleware < Ext2 , S , any >
33
- ) : StoreEnhancer < { dispatch : Ext1 & Ext2 } >
34
- export default function applyMiddleware < Ext1 , Ext2 , Ext3 , S > (
35
- middleware1 : Middleware < Ext1 , S , any > ,
36
- middleware2 : Middleware < Ext2 , S , any > ,
37
- middleware3 : Middleware < Ext3 , S , any >
38
- ) : StoreEnhancer < { dispatch : Ext1 & Ext2 & Ext3 } >
39
- export default function applyMiddleware < Ext1 , Ext2 , Ext3 , Ext4 , S > (
40
- middleware1 : Middleware < Ext1 , S , any > ,
41
- middleware2 : Middleware < Ext2 , S , any > ,
42
- middleware3 : Middleware < Ext3 , S , any > ,
43
- middleware4 : Middleware < Ext4 , S , any >
44
- ) : StoreEnhancer < { dispatch : Ext1 & Ext2 & Ext3 & Ext4 } >
45
- export default function applyMiddleware < Ext1 , Ext2 , Ext3 , Ext4 , Ext5 , S > (
46
- middleware1 : Middleware < Ext1 , S , any > ,
47
- middleware2 : Middleware < Ext2 , S , any > ,
48
- middleware3 : Middleware < Ext3 , S , any > ,
49
- middleware4 : Middleware < Ext4 , S , any > ,
50
- middleware5 : Middleware < Ext5 , S , any >
51
- ) : StoreEnhancer < { dispatch : Ext1 & Ext2 & Ext3 & Ext4 & Ext5 } >
52
- export default function applyMiddleware < Ext , S = any > (
53
- ...middlewares : Middleware < any , S , any > [ ]
54
- ) : StoreEnhancer < { dispatch : Ext } >
55
- export default function applyMiddleware (
56
- ...middlewares : Middleware [ ]
57
- ) : StoreEnhancer < any > {
58
- return ( createStore : StoreCreator ) => < S , A extends AnyAction > (
59
- reducer : Reducer < S , A > ,
28
+ export default function applyMiddleware <
29
+ S = any ,
30
+ M extends Middleware = Middleware
31
+ > (
32
+ ...middlewares : M [ ]
33
+ ) : StoreEnhancer <
34
+ M extends Middleware < any , any , infer D > ? { dispatch : D } : never ,
35
+ S
36
+ > {
37
+ return ( createStore : StoreEnhancerStoreCreator < any > ) => (
38
+ reducer ,
60
39
...args : any [ ]
61
40
) => {
62
41
const store = createStore ( reducer , ...args )
0 commit comments