Как правильно использовать диспетчерское действие с типом потока, получили свойства несовместимые ошибки? - PullRequest
0 голосов
/ 14 февраля 2019

Я использую response-redux для диспетчеризации, и все работает правильно, но я хочу отправить действие в axios interceptors для перехвата ошибок, таких как:

axios.interceptors.response.use(null, (error) => {
  const { response } = error;
  const message = (response && response.data) || 'Something failed.';
  store.dispatch(notificationAdd({ type: errorType, message }));

  return Promise.reject(error);
});

Но тип потока вызывает ошибку store.dispatch:

Cannot instantiate Store because property type is read-only in object type [1]
but writable in object type [2] in type argument A.

    14|                            ▼
[1] 15| const store: Store<State, Actions> = createStore(
    16|   rootReducer,
    17|   storeEnhancers(applyMiddleware(sagaMiddleware)),
    18| );

    flow-typed/npm/redux_v4.x.x.js                  ▼
[2] 15|   declare export type Dispatch<A: { type: $Subtype<string> }> = DispatchAPI<A>;

Мои действия по уведомлению выглядят следующим образом:

type Add = $ReadOnly<{
  type: typeof NOTIFICATION_ADDED,
  payload: AddPayload,
}>;

export const notificationAdd = (notification: AddPayload): Add => ({
  type: NOTIFICATION_ADDED,
  payload: notification,
});

Итак, как решить эту проблему?

...