@@ -194,9 +194,8 @@ export interface Store<S> {
194
194
* @template S State object type.
195
195
*/
196
196
export interface StoreCreator {
197
- < S > ( reducer : Reducer < S > , enhancer ?: StoreEnhancer ) : Store < S > ;
198
- < S > ( reducer : Reducer < S > , initialState : S ,
199
- enhancer ?: StoreEnhancer ) : Store < S > ;
197
+ < S > ( reducer : Reducer < S > , enhancer ?: StoreEnhancer < S > ) : Store < S > ;
198
+ < S > ( reducer : Reducer < S > , initialState : S , enhancer ?: StoreEnhancer < S > ) : Store < S > ;
200
199
}
201
200
202
201
/**
@@ -217,7 +216,9 @@ export interface StoreCreator {
217
216
* without the app being aware it is happening. Amusingly, the Redux
218
217
* middleware implementation is itself a store enhancer.
219
218
*/
220
- export type StoreEnhancer = ( next : StoreCreator ) => StoreCreator ;
219
+ export type StoreEnhancer < S > = ( next : StoreEnhancerStoreCreator < S > ) => StoreEnhancerStoreCreator < S > ;
220
+ export type GenericStoreEnhancer = < S > ( next : StoreEnhancerStoreCreator < S > ) => StoreEnhancerStoreCreator < S > ;
221
+ export type StoreEnhancerStoreCreator < S > = ( reducer : Reducer < S > , initialState : S ) => Store < S > ;
221
222
222
223
/**
223
224
* Creates a Redux store that holds the state tree.
@@ -287,7 +288,7 @@ export interface Middleware {
287
288
* @param middlewares The middleware chain to be applied.
288
289
* @returns A store enhancer applying the middleware.
289
290
*/
290
- export function applyMiddleware ( ...middlewares : Middleware [ ] ) : StoreEnhancer ;
291
+ export function applyMiddleware ( ...middlewares : Middleware [ ] ) : GenericStoreEnhancer ;
291
292
292
293
293
294
/* action creators */
0 commit comments