Я хотел бы попросить о помощи или совете с приложением react
, typescript
, которое использует Redux Thunk
в качестве промежуточного программного обеспечения.
Мое приложение использует структуру файла ducks для Redux .
Я пытаюсь отправить action
, который Redux-Thunk action creator
, который также отправляет Redux-Thunk action creator
(Извините за мой Engli sh Я постараюсь объяснить это с кодом).
Допустим, у меня есть создатель действия, подобный этому:
/**
* Not going to work unless I will explicitly change return type to `any` or do `as any` when dispatching this action from another action creator.
*/
export function setData(
value: boolean
): ThunkAction<void, AppState, null, SetDataAction> {
return (dispatch: Dispatch, getState: () => AppState): void => {
dispatch({
type: SHOW_ALL_DATA,
payload: false,
});
}
};
}
Чем позже, где-то в моем приложении у меня есть другое
действие , которое
dispatch
вышеописанное действие:
export function setSomeExtraData(
value: boolean
): ThunkAction<void, AppState, null, SetExtraDataAction> {
return (dispatch: Dispatch, getState: () => AppState): void => {
dispatch(setData(true)); // not working
// dispatch((setData as any)(true));working
}
};
}
Сообщение об ошибке выглядит так:
No overload matches this call.
Overload 1 of 3, '(action: RSAAAction<any, unknown, unknown>): Promise<RSAAResultAction<unknown, unknown>>', gave the following error.
Argument of type 'ThunkAction<Promise<void>, null, CombinedState<{ auth: CombinedState<{ username: string; authToken: string; signInTimestamp: number; }>; currentUser: CombinedState<{ user: User | null; isLoading: boolean; loaded: boolean; }>; ... 12 more ...; inflightRequests: CombinedState<...>; }>, LogsActionTypes> | undefined' is not assignable to parameter of type 'RSAAAction<any, unknown, unknown>'.
Type 'undefined' is not assignable to type 'RSAAAction<any, unknown, unknown>'.
...
...
Итак, что мы получили. Обычно, когда я не отправляю thunk-action creator
, мне даже не нужно указывать тип возврата, как я это сделал здесь:
ThunkAction<void, AppState, null, SetDataAction>
печатать более умнее, чем я, чтобы выбрать правильный типы, но в моем случае я ищу правильные типы, чтобы Typescript не жаловался.
В качестве ссылки я видел это сообщение StackOverflow , но ни одно из решений не работает для меня. Пожалуйста, дайте мне знать, если для моего случая существует правильный тип или as any
- это только один вариант здесь (кроме рефакторинга кода, чтобы избежать отправки redux-thunk action creator
)
Спасибо!