Я изо всех сил пытаюсь понять, какой тип возврата должен быть для моего действия. Все работает, пока я использую 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>'
export const saveValue = (value: number): Dispatch<SaveValue> => {
- person Shubham Khatri   schedule 11.06.2018Type '(dispatch: Dispatch<SaveValue>, getState: () => State) => void' is not assignable to type 'Dispatch<SaveValue>'
- person Alan Schapira   schedule 11.06.2018