Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 在子组件中使用actionType作为属性的typescript react-redux和redux-thunk_Reactjs_Typescript_Redux_Redux Thunk - Fatal编程技术网

Reactjs 在子组件中使用actionType作为属性的typescript react-redux和redux-thunk

Reactjs 在子组件中使用actionType作为属性的typescript react-redux和redux-thunk,reactjs,typescript,redux,redux-thunk,Reactjs,Typescript,Redux,Redux Thunk,我有一个由两部分组成的示例任务和任务 在父组件任务中,我已连接存储 type Props = ConnectedProps<typeof connector> const mapDispatchToProps = { updateTask }; const connector = connect(mapStateToProps, mapDispatchToProps); export default connector(Tasks) 但这段代码会导致 类型“taskId:strin

我有一个由两部分组成的示例任务和任务 在父组件任务中,我已连接存储

type Props = ConnectedProps<typeof connector>
const mapDispatchToProps = { updateTask };
const connector = connect(mapStateToProps, mapDispatchToProps);
export default connector(Tasks)
但这段代码会导致

类型“taskId:string,updatedTask:Partial=>void”不可分配给类型“taskId:string,updatedTask:Partial=>ThunkAction”。类型“void”不可分配给类型“ThunkAction”

当然,因为它不通过redux connect

所以我的问题是使用“react-redux”库中的InferThunkActionCreatorType是否安全

type Props = {
  updateTask: InferThunkActionCreatorType<typeof updateTaskAndPropagate>
}
定义是

export type InferThunkActionCreatorType<TActionCreator extends (...args: any[]) => any> =
    TActionCreator extends (...args: infer TParams) => (...args: any[]) => infer TReturn
        ? (...args: TParams) => TReturn
        : TActionCreator;

这正是我需要的相同函数参数,但返回类型为void

是的,这是适合您的用例的完美类型。 它是在连接类型中使用的连接函数的签名,因此它完全模仿您正在寻找的内容

你会这么做的

type Props = {
  updateTask: InferThunkActionCreatorType<typeof updateTask>
}
哦,以防您不知道:现在有一个ConnectedProps类型,它可以让您更容易地键入connect:


通常可能会派上用场:

是的,检查代码部分的第一行:已经在使用它键入Props=ConnectedPropsWhoops,错过了那一行:但谢谢确认!:现在它完全是类型安全的!:
type Props = {
  updateTask: InferThunkActionCreatorType<typeof updateTask>
}