Reactjs 在react redux with typescript中,无法将对象与操作一起使用,而不是mapDispatchToProps

Reactjs 在react redux with typescript中,无法将对象与操作一起使用,而不是mapDispatchToProps,reactjs,typescript,redux,react-redux,Reactjs,Typescript,Redux,React Redux,我习惯于在动作中使用object,但当我尝试在typescript中使用它时,我无法在函数组件中使用它 下面是一些代码片段: type Props = LinkStateProps & LinkDispatchProps const TodolistBody: React.FC<Props> = props => { return <Todolist todolist={[]} /> } interface LinkStateProps {

我习惯于在动作中使用object,但当我尝试在typescript中使用它时,我无法在函数组件中使用它 下面是一些代码片段:

type Props = LinkStateProps & LinkDispatchProps

const TodolistBody: React.FC<Props> = props => {
    return <Todolist todolist={[]} />
}

interface LinkStateProps {
    todolist: TodoType[]
}

interface LinkDispatchProps {
    AddTodoAction(todo: TodoType[]): void
    UpdateTodoAction(todo: TodoType[]): void
}

const mapStateToProps = (state: AppState): LinkStateProps => ({ todolist: state.todolist })

export default connect(mapStateToProps, {AddTodoAction, UpdateTodoAction})(TodolistBody)
type Props=LinkStateProps&LinkDispatchProps
const topolistbody:React.FC=props=>{
返回
}
接口LinkStateProps{
todolist:TodoType[]
}
接口链接分派道具{
AddTodoAction(todo:TodoType[]):void
UpdateTodoAction(todo:TodoType[]):void
}
常量mapStateToProps=(状态:AppState):LinkStateProps=>({todolist:state.todolist})
导出默认连接(mapStateToProps,{AddTodoAction,UpdateTodoAction})(TodolistBody)
typescript在connect中的TodoListBody上显示错误:

Argument of type 'FC<Props>' is not assignable to parameter of type 'ComponentType<Matching<LinkStateProps & { AddTodoAction: (todo: TodoType) => Promise<void>; UpdateTodoAction: (todo: TodoType) => Promise<void>; }, Props>>'.
  Type 'FunctionComponent<Props>' is not assignable to type 'FunctionComponent<Matching<LinkStateProps & { AddTodoAction: (todo: TodoType) => Promise<void>; UpdateTodoAction: (todo: TodoType) => Promise<void>; }, Props>>'.
    Types of property 'propTypes' are incompatible.
      Type 'WeakValidationMap<Props> | undefined' is not assignable to type 'WeakValidationMap<Matching<LinkStateProps & { AddTodoAction: (todo: TodoType) => Promise<void>; UpdateTodoAction: (todo: TodoType) => Promise<void>; }, Props>> | undefined'.
        Type 'WeakValidationMap<Props>' is not assignable to type 'WeakValidationMap<Matching<LinkStateProps & { AddTodoAction: (todo: TodoType) => Promise<void>; UpdateTodoAction: (todo: TodoType) => Promise<void>; }, Props>>'.
          Types of property 'AddTodoAction' are incompatible.
            Type 'Validator<(todo: TodoType[]) => void> | undefined' is not assignable to type 'Validator<(todo: TodoType) => Promise<void>> | undefined'.
              Type 'Validator<(todo: TodoType[]) => void>' is not assignable to type 'Validator<(todo: TodoType) => Promise<void>>'.
                Type '(todo: TodoType[]) => void' is not assignable to type '(todo: TodoType) => Promise<void>'.ts(2345)
类型为“FC”的参数不能分配给类型为“ComponentType Promise;”的参数,道具>>'。
类型'FunctionComponent'不可分配给类型'FunctionComponent Promise;},道具>>'。
属性“propTypes”的类型不兼容。
类型“WeakValidationMap | undefined”不可分配给类型“WeakValidationMap Promise;”,道具>>|未定义'。
类型“WeakValidationMap”不可分配给类型“WeakValidationMap Promise;”,道具>>'。
属性“AddTodoAction”的类型不兼容。
类型“Validator void>| undefined”不能分配给类型“Validator Promise>| undefined”。
类型“Validator void>”不可分配给类型“Validator Promise>”。
Type'(todo:TodoType[])=>void'不可分配给Type'(todo:TodoType)=>Promise'.ts(2345)
但是,如果我使用mapDispatchToProps而不是带有动作的对象,那么一切都可以正常工作:

const mapDispatchToProps = (dispatch: ThunkDispatch<any, any, AppActions>): LinkDispatchProps => ({
    AddTodoAction: () => bindActionCreators(AddTodoAction, dispatch),
    UpdateTodoAction: () => bindActionCreators(UpdateTodoAction, dispatch)
})
export default connect(mapStateToProps, mapDispatchToProps)(TodolistBody)
//No errors
const mapDispatchToProps=(调度:ThunkDispatch):LinkDispatchProps=>({
AddTodoAction:()=>bindActionCreators(AddTodoAction,dispatch),
UpdateTodoAction:()=>bindActionCreators(UpdateTodoAction,dispatch)
})
导出默认连接(mapStateToProps、mapDispatchToProps)(TodolistBody)
//没有错误
另外,如果我使用基于类的组件,并像第一个示例中那样执行所有操作,那么所有操作都可以正常工作

问题是:如何在功能组件中使用object而不是mapDispatchToProps

另外,LinkDispatchProps存在问题,但如果没有它,当我尝试使用AddTodoAction或UpdateTodoAction操作创建者时,组件本身会出现错误