I commonly see code that explicitly types both the state and action payload when creating a reducer, this is burdensome and can lead to bugs.
eg.
const aReducer = reducer<State, Payload>(customActionCreator, (_, payload) => ({...defaultState, ...payload}))