如何修复 redux-observable 参数 'action$' 隐式具有 'any' 类型
How to fix redux-observable Parameter 'action$' implicitly has an 'any' type
我正在尝试实现 TS epic 函数,但是 "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))),
),
),
);
功能很简单,但是如何修复"Parameter 'action$' implicitly has an 'any' type."错误?
重要! Dot 告诉我关闭 "noImplicitAny": true,否则不要检查这部分代码)
不要关闭 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;
然后在你的epics中,你可以这样写:
import {
ActionsObservable,
StateObservable
} from 'redux-observable';
export const fetchSettingsEpic = (action$: ActionsObservable<SettingsAction>) =>
action$.ofType(SettingsActionTypes.FETCH).mergeMap(...do your stuff here...)
此外,如果您需要访问 epics 中的状态,您可能必须使用类型为 StatesObservable<T>
的第二个参数 state$。其中 T 是定义整个 redux 状态结构的接口。
我正在尝试实现 TS epic 函数,但是 "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))),
),
),
);
功能很简单,但是如何修复"Parameter 'action$' implicitly has an 'any' type."错误?
重要! Dot 告诉我关闭 "noImplicitAny": true,否则不要检查这部分代码)
不要关闭 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;
然后在你的epics中,你可以这样写:
import {
ActionsObservable,
StateObservable
} from 'redux-observable';
export const fetchSettingsEpic = (action$: ActionsObservable<SettingsAction>) =>
action$.ofType(SettingsActionTypes.FETCH).mergeMap(...do your stuff here...)
此外,如果您需要访问 epics 中的状态,您可能必须使用类型为 StatesObservable<T>
的第二个参数 state$。其中 T 是定义整个 redux 状态结构的接口。