Я установил избыточную функцию thunk с машинописным текстом следующим образом:
export const fetchActivities = (): AppThunk => async dispatch => {
dispatch(fetchActivitiesRequest())
try {
const res = await fetch("/activities")
const body = await res.json()
dispatch(fetchActivitiesSuccess(body))
} catch (err) {
dispatch(fetchActivitiesError(err))
}
}
AppThunk - это просто тип, производный от типа ThunkAction, со следующими параметрами типа:
export type AppThunk<ReturnType = void> = ThunkAction<ReturnType, {}, null, Action<string>>
Моя проблема в том, что, когда я пытаюсь настроить модульный тест для своего действия, и когда я пытаюсь отправить действие thunk следующим образом:
const middlewares = [thunk]
const mockStore = configureMockStore(middlewares)
const store = mockStore({ activities: [] })
store.dispatch(actions.fetchActivities())
, я получаю следующее сообщение об ошибке:
Argument of type 'ThunkAction<void, {}, null, Action<string>>' is not assignable to parameter of type 'AnyAction'.
Property 'type' is missing in type 'ThunkAction<void, {}, null, Action<string>>' but required in type 'AnyAction'.ts(2345)
Я пытался найти решение этой проблемы, но безуспешно. Большинство предложений говорят, чтобы попытаться добавить любой параметр к generi c для отправки, поэтому dispatch<any>(actions.fetchActivities())
. Несмотря на то, что это работает, чтобы остановить ошибку ввода, будет отправлено только первое действие в thunk, а все внутри операторов try и catch игнорируется.
У кого-нибудь есть предложения относительно того, как решить эту проблему?