Я изо всех сил пытаюсь выяснить, какой тип возврата должен быть для моего действия.Все работает, пока я использую any
, но пытаюсь избежать использования any
.
export const saveValue = (value: number): any => {
return (dispatch: Dispatch<SaveValue>, getState: () => State): void => {
axios.post('www.exampleurl.com', value)
.then((response) => {
const someValueFromState = getState().stateValue;
const payload = {...response, someValueFromState}
dispatch({ type: constants.SAVE_VALUE, payload });
});
};
};
У меня это работало раньше, когда действие не использовало getState()
, и это выглядело так, гдевернул Dispatch<SaveValue>
:
export const saveValue = (value: number): Dispatch<SaveValue> => {
return (dispatch: Dispatch<SaveValue>): void => {
axios.post('www.exampleurl.com', value)
.then((response) => {
dispatch({ type: constants.SAVE_VALUE, response });
});
};
};
Но как только я добавил getState, я не уверен, что делать дальше.Я попытался поместить возвращаемое значение в переменную и вижу, что создаваемый объект - const myAttempt: (dispatch: Dispatch<SaveValue>, getState: () => State) => void
, но когда я попытался использовать его следующим образом, он не работает:
export const saveValue = (value: number): (dispatch: Dispatch<SaveValue>, getState: () => StoreState) => void => {
return (dispatch: Dispatch<SaveValue>, getState: () => State): void => {
axios.post('www.exampleurl.com', value)
.then((response) => {
const someValueFromState = getState().stateValue;
const payload = {...response, someValueFromState}
dispatch({ type: constants.SAVE_VALUE, payload });
});
};
};
Делая это, Я получаю ошибку: A function whose declared type is neither 'void' nor 'any' must return a value.
РЕДАКТИРОВАТЬ:
Просто добавить, я не могу вернуть Dispatch<SaveValue>
, как я был раньше, в противном случае я получаю эту ошибку: Type '(dispatch: Dispatch<SaveValue>, getState: () => State) => void' is not assignable to type 'Dispatch<SaveValue>'