Как исправить наблюдаемый в редуксе параметр 'action $' неявно имеет тип 'any' - PullRequest
0 голосов
/ 04 февраля 2019

Я пытаюсь реализовать эпическую функцию TS, но у "action $" должен быть какой-то неявный тип, отличающийся тем, что я не могу найти рабочий пример функции этого типа ...

Я сделал функциюэто работает просто отлично, но я не могу исправить ошибку TS ЛЮБОГО типа.

export const fetchSettingsEpic = action$ => action$.pipe(
  ofType(types.UPDATE_INITIAL_SETTINGS),
  mergeMap(action =>
    ajax.getJSON(url).pipe(
      map((response: Settings) => 
actions.updateInitialSuccess(response)),
      catchError(error => of(actions.updateInitialError(error))),
    ),
  ),
);

Функция довольно проста, но как я могу исправить "Параметр 'action $' неявно имеет тип 'any'".ошибка?

ВАЖНО!Не говорите мне отключить noImplicitAny: true или не проверять эту часть кода)

1 Ответ

0 голосов
/ 06 февраля 2019

Не выключайте noImplicityAny.Вы правы, вы не должны!

Что вы должны сделать, это объявить тип параметров, который является ActionsObservable<T>.Где T должен быть типом действия.

Пример:

export enum SettingsActionTypes {
   FETCH: "settings/fetch",
   FETCH_SUCCESS: "settings/fetchSuccess"
}

export function fetch(): IFetchAction {
   return {
       type: SettingsActionTypes.FETCH
   };
}

export interface IFetchAction {
   type: SettingsActionTypes.FETCH;
}

export interface IFetchSuccessAction {
   type: SettingsActionTypes.FETCH_SUCCESS;
}

export type SettingsAction = IFetchAction | IFetchSuccessAction;

Тогда в своих эпосах вы можете написать что-то вроде этого:

import {
   ActionsObservable,
   StateObservable
} from 'redux-observable';

export const fetchSettingsEpic = (action$: ActionsObservable<SettingsAction>) =>
      action$.ofType(SettingsActionTypes.FETCH).mergeMap(...do your stuff here...)

Также,если вам нужно получить доступ к состоянию в ваших эпосах, вам, возможно, придется использовать второй параметр state $, тип которого StatesObservable<T>.Где T - это интерфейс, который определяет структуру всего вашего состояния избыточности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...