Ввод создателя асинхронных действий в режиме редукса - PullRequest
0 голосов
/ 13 сентября 2018

Я пытаюсь набрать эту функцию, но у меня проблемы

function createAsyncAction(actionName: ActionNames, functionName: String) {
  return function(
    ...params: any[]
  ): ActionCreator<ThunkAction<any, any, any, any>> {
    return async function(dispatch, getState, client, any) {
      dispatch({ type: `${actionName}_REQUESTING`, status: REQUESTING });
      try {
        let result = null;
        if (client[functionName]) {
          result = await client[functionName].apply(this, params);
        }
        dispatch({ type: `${actionName}_SUCCESS`, payload: result });
      } catch (e) {
        dispatch({ type: `${actionName}_FAILURE`, error: e.message });
      }
    };
  };
}

Я получаю ошибку для типа ActionCreator<ThunkAction<any,any,any,any>>.

Это ошибка

Type '(dispatch: any, getState: any, client: any, any: any) => Promise<any>' is not assignable to type 'ActionCreator<ThunkAction<any, any, any, any>>'.
  Type 'Promise<any>' is not assignable to type 'ThunkAction<any, any, any, any>'.
    Type 'Promise<any>' provides no match for the signature '(dispatch: ThunkDispatch<any, any, any>, getState: () => any, extraArgument: any): any'.

Однако я не понимаю, почему происходит эта ошибка, возможно, потому, что я не до конца понимаю, что делает ThunkAction.

Что не так?

1 Ответ

0 голосов
/ 15 сентября 2018

У меня нет четкого понимания и избыточности, но перемещение аннотации возвращаемого типа ActionCreator<ThunkAction<any, any, any, any>> во внешнюю функцию createAsyncAction, похоже, устраняет ошибку, и я думаю, что это, вероятно, то, что вы намереваетесь.

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