В нашем проекте все создатели действий определены так:
export const actionCreatorFunctionName(arg1, arg2...) {
return (dispatch: Dispatch, getStore: () => StoreState) => {
// ... function logic ...
dispatch(actionFunctionName(args...));
}
}
Некоторые создатели действий отправляют HTTP-запросы и не вызывают dispatch
до разрешения запроса.
Эти создатели действий сопоставляются с реквизитами, используя connect
hoc, например:
import * as ActionCreators from "./actionCreators";
connect(mapStateToProps, { actions: ActionCreators })(SomeComponent);
Проблема в том, что при использовании этой настройки кажется невозможным правильно настроить интерфейс реквизита для компонента. Мы попытались настроить реквизиты следующим образом:
interface Props {
actions: typeof ActionCreators;
}
Но это не работает, потому что реквизит actions
на самом деле не тот же тип, что и ActionCreators
, потому что connect
hoc изменяет actionCreators из функций, которые возвращают функции в простые функции.