typescript中的Redux验证中间件

typescript中的Redux验证中间件,redux,react-redux,redux-thunk,redux-middleware,Redux,React Redux,Redux Thunk,Redux Middleware,我希望实现redux thunk,以便在我分派可能更改有效状态的特定操作时处理一些表单验证 我已将我的actionCreator实现为: import { DispatchTypes, ActionTypes } from "./Actions"; import { State } from "./State"; import { Validation } from "../models/Validation"; export con

我希望实现redux thunk,以便在我分派可能更改有效状态的特定操作时处理一些表单验证

我已将我的actionCreator实现为:

import { DispatchTypes, ActionTypes } from "./Actions";
import { State } from "./State";
import { Validation } from "../models/Validation";

export const runFiltersValidation = () => (dispatch: DispatchTypes, getState: ()=> State) => {
    const { searchText, rating } = getState()?.filters

    const validation: Validation = {
        isTextValid: searchText ? true: false,
        isRatingValid: rating ? true : false
    }

    dispatch({ type: ActionTypes.SetValid, value: validation })
}
我的中间件本身:

import { ActionTypes, Actions, DispatchTypes } from "./Actions";
import { Middleware, Dispatch, MiddlewareAPI } from "redux";
import { runFiltersValidation } from "./ActionCreators";
import { State } from "./State";

const typesRequiringValidation = [
    ActionTypes.ResetFilters
];

const actionTypeContains = (types: ActionTypes[], type: ActionTypes): boolean =>
  types.indexOf(type) !== -1;

const ValidationMiddleware: Middleware = (
  api: MiddlewareAPI<DispatchTypes, State>
) => (next: Dispatch<Actions>) => <A extends Actions>(action: A) => {
  const result = next(action);

  if (actionTypeContains(typesRequiringValidation, action.type)) {
    api.dispatch(runFiltersValidation());
  }

  return result;
};

export default ValidationMiddleware;
import{ActionTypes,Actions,DispatchTypes}来自“/Actions”;
从“redux”导入{中间件,分派,MiddlewareAPI};
从“/ActionCreators”导入{runFiltersValidation};
从“/State”导入{State}”;
常量类型要求验证=[
ActionTypes.ResetFilters
];
常量actionTypeContains=(类型:ActionTypes[],类型:ActionTypes):布尔=>
类型。索引(类型)!=-1.
const ValidationMiddleware:中间件=(
api:MiddlewareAPI
)=>(下一步:调度