Как типизировать thunk actions в typescript?
Какой правильный способ типизации thunk actions в typescript?
export const addTodoAction = ({text, completed}: NewTodo) => {
return (dispatch: Dispatch<TodoAction>) => {...}
}
или
export const addTodoAction = ({text, completed}: NewTodo): ThunkAction<void, RootState, null, TodoAction> => {
return dispatch => {...}
}
Ответы (1 шт):
Автор решения: KOTI4
→ Ссылка
const addTodoAction: ActionCreator<
ThunkAction<Promise<Action>, ITodo, void, Action>
> = () => async (dispatch: ThunkDispatch<ITodo, null, AnyAction>):
Promise<Action> => {
try {
const todos = await axios();
return dispatch<ITodoActionInit>({
type: TodoActionTypes.TODO_INIT,
payload: { todos },
});
} catch (error) {
return dispatch<ITodoActionError>({
type: TodoActionTypes.TODO_ERROR,
payload: { error },
});
}
};