I'm attempting to configure the dispatch type on a redux store that is using thunk middleware and an optional middleware logger (redux-logger
).
This correctly infers the thunk type on store's dispatch
...
import { createStore, applyMiddleware } from 'redux';
import thunk, { ThunkMiddleware } from 'redux-thunk';
// ...
const preloadedState = undefined;
export const store = createStore(rootReducer, preloadedState, applyMiddleware(thunk as ThunkMiddleware));
When I expand the middleware to include a conditional logger and spread an array of middleware into applyMiddleware
, the store's dispatch
is not correctly inferred.
import { createStore, applyMiddleware, Middleware } from 'redux';
import thunk, { ThunkMiddleware } from 'redux-thunk';
import { createLogger } from 'redux-logger';
// ...
const middleware: Middleware[] = [thunk as ThunkMiddleware];
if (Settings.environment === 'development') {
const logger = createLogger({ collapsed: (_getState, _action, logEntry) => !logEntry.error });
middleware.push(logger);
}
const preloadedState = undefined;
export const store = createStore(rootReducer, preloadedState, applyMiddleware(...middleware));
This is driving me crazy, any thoughts as to how to fix the typing issue when spreading the middleware array?