У меня возникли проблемы, когда я не могу понять, как передать AsyncAction, созданную с помощью CreateAsyncAction, с сохранением информации о типизации, например, в моем случае я пытаюсь создать универсальную эпопею запроса GraphQL с использованием ApolloClient, поскольку все они будут иметьтот же поток REQUEST / SUCCESS / FAILURE:
Каким должен быть тип asyncAction, чтобы isActionOf и action.Payload разрешались правильно?
const createAsyncEpic = (asyncAction: <type?>, mutation: any) {
const epic: Epic<RootAction, RootState> = (action$, state$) =>
action$.pipe(
filter(isActionOf(actions.request)),
withLatestFrom(state$),
mergeMap(([action, state]) =>
client
.mutate({ mutation, variables: { ...action.payload } })
.then((result: ApolloQueryResult<P2>) => {
return actions.success(result.data);
})
.catch((error: ApolloError) => {
return actions.failure(error);
})
)
);
return epic;
};
Спасибо!