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>
}