Reactjs 使用dispatch和getState时的Redux操作返回类型

Reactjs 使用dispatch和getState时的Redux操作返回类型,reactjs,typescript,redux,redux-thunk,Reactjs,Typescript,Redux,Redux Thunk,我正在努力弄清楚我的行动应该是什么样的回报类型。当我使用any时,一切都正常,但我尽量避免使用any export const saveValue = (value: number): any => { return (dispatch: Dispatch<SaveValue>, getState: () => State): void => { axios.post('www.exampleurl.com', value)

我正在努力弄清楚我的行动应该是什么样的回报类型。当我使用
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,我就不知道该怎么做了。我尝试将返回值放入变量中,可以看到我正在创建的对象是
constmytrunt:(dispatch:dispatch,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 });
            });
    };
};
export const saveValue=(值:number):(分派:分派,getState:()=>StoreState)=>void=>{
return(dispatch:dispatch,getState:()=>State):void=>{
axios.post('www.exampleurl.com',value)
。然后((响应)=>{
const someValueFromState=getState().stateValue;
常量有效负载={…响应,someValueFromState}
分派({type:constants.SAVE_VALUE,payload});
});
};
};
这样做,我会得到一个错误:
声明类型既不是'void'也不是'any'的函数必须返回一个值。

编辑:


只是补充一下,我不能像以前一样返回
Dispatch
,否则我会得到这个错误:
Type'(Dispatch:Dispatch,getState:()=>State)=>void'不能分配给类型'Dispatch'

一个朋友帮我回答了这个问题。这是正确的做法:

export const saveValue = (value: number): (dispatch: Dispatch<SaveValue>, getState: () => State): 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 });
            });
    };
};
但接口必须是:

interface MapDispatchToPropsInterface {
    saveValue : (saveDetails: CheckedVisit) =>  (dispatch: Dispatch<SaveValue>, getState: () => StoreState) => void;
}
接口映射DispatchTopropsInterface{
saveValue:(saveDetails:CheckedVisit)=>(dispatch:dispatch,getState:()=>StoreState)=>void;
}

我想您仍然只需要
导出const saveValue=(值:number):Dispatch=>{
当我这样做时,它会显示
Type'(Dispatch:Dispatch,getState:()=>State)=>void'不可分配给类型'Dispatch'
当我尝试此操作时,我在第一行出现语法错误
:void=>
。似乎使用react-redux的内置
ThunkAction
是正确的方法。
interface MapDispatchToPropsInterface {
    saveValue : (value: number) => Dispatch<SaveValue>;
}

const mapDispatchToProps: MapDispatchToPropsInterface = {
    saveValue : ActionCreators.saveValue,
};
interface MapDispatchToPropsInterface {
    saveValue : (saveDetails: CheckedVisit) =>  (dispatch: Dispatch<SaveValue>, getState: () => StoreState) => void;
}