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
};
}