import * as WeatherForecasts from './reducers/WeatherForecasts' import * as Counter from './reducers/Counter' import * as Content from './reducers/Content' // The top-level state object export interface ApplicationState { counter: Counter.CounterState | undefined weatherForecasts: WeatherForecasts.WeatherForecastsState | undefined content: Content.IContentState | undefined } // Whenever an action is dispatched, Redux will update each top-level application state property using // the reducer with the matching name. It's important that the names match exactly, and that the reducer // acts on the corresponding ApplicationState property type. export const reducers = { counter: Counter.reducer, weatherForecasts: WeatherForecasts.reducer, content: Content.reducer } // This type can be used as a hint on action creators so that its 'dispatch' and 'getState' params are // correctly typed to match your store. export interface AppThunkAction { (dispatch: (action: TAction) => void, getState: () => ApplicationState): void }