You can get the type of the state from the root reducer
// the reducer const appReducer = combineReducers({ global: globalStateReducer, example: exampleReducer }); type AppState = ReturnType<typeof appReducer>
However the redux state can be cleared in some scenarios, so it should be undefinable
//See https://stackoverflow.com/a/35641992/301447 for "undefined redux state" type RootState = AppState | undefined; const rootReducer = (state:RootState, action: Action) => { if (action.type === DESTROY_REDUX_STATE) { state = undefined; } return appReducer(state, action) }
And mapStateToProps() of a component will look like this:
function mapStateToProps(rootState: RootState) { return { example: rootState!.example //note the exclamation mark as rootState can be undefined }; }