TS2345错误:typeof UsersC无法分配给ComponentType类型参数
导入类组件UsersC时触发TS2345错误,具体错误信息如下:
TS2345: 类型为 'typeof UsersC' 的参数无法赋值给类型为 'ComponentType' 的参数。
类型 'typeof UsersC' 无法赋值给类型 'ComponentClass<never, any>'。
属性 'contextType' 的类型不兼容。
类型 'React.Context | undefined' 无法赋值给类型 'import("D:/It-kamasutra/social-network/node_modules/@types/react-redux/node_modules/@types/react/ts5.0/index").Context | undefined'。
类型 'React.Context' 无法赋值给类型 'import("D:/It-kamasutra/social-network/node_modules/@types/react-redux/node_modules/@types/react/ts5.0/index").Context'。
这些类型之间的 'Provider.propTypes' 属性不兼容。
类型 'React.WeakValidationMap<React.ProviderProps> | undefined' 无法赋值给类型 'import("D:/It-kamasutra/social-network/node_modules/@types/react-redux/node_modules/@types/react/ts5.0/index").WeakValidationMap<import("D:/It-kamasutra/social-network/node_modules/@types/react-redux/node_modules/@types/react/ts5.0/index").ProviderProps> | undefined'。
类型 'React.WeakValidationMap<React.ProviderProps>' 无法赋值给类型 'import("D:/It-kamasutra/social-network/node_modules/@types/react-redux/node_modules/@types/react/ts5.0/index").WeakValidationMap<import("D:/It-kamasutra/social-network/node_modules/@types/react-redux/node_modules/@types/react/ts5.0/index").ProviderProps>'。
属性 'children' 的类型不兼容。
类型 'React.Validator<React.ReactNode> | undefined' 无法赋值给类型 'import("D:/It-kamasutra/social-network/node_modules/@types/react-redux/node_modules/@types/react/ts5.0/index").Validator<import("D:/It-kamasutra/social-network/node_modules/@types/react-redux/node_modules/@types/react/ts5.0/index").ReactNode> | undefined'。
类型 'React.Validator<React.ReactNode>' 无法赋值给类型 'import("D:/It-kamasutra/social-network/node_modules/@types/prop-types/index").Validator<import("D:/It-kamasutra/social-network/node_modules/@types/react-redux/node_modules/@types/react/ts5.0/index").ReactNode>'。
类型 'React.ReactNode' 无法赋值给类型 'import("D:/It-kamasutra/social-network/node_modules/@types/react-redux/node_modules/@types/react/ts5.0/index").ReactNode'。
类型 '{}' 无法赋值给类型 'ReactNode'。
类型 '{}' 缺少类型 'ReactPortal' 中的以下属性:key、children、type、props
解决方法
- 统一React类型依赖版本:错误显示
react-redux内部依赖的@types/react和项目根版本不一致,导致类型冲突。操作步骤:- 删除
node_modules和锁文件(package-lock.json或yarn.lock) - 在
package.json中明确指定@types/react、@types/react-dom的版本,确保与react-redux要求的版本匹配 - 重新执行
npm install或yarn install
- 删除
- 检查组件Context类型:确保
UsersC组件的contextType使用的是项目统一导入的React Context,避免跨版本类型引用 - 清除TS缓存:执行
npx tsc --clearCache清除TypeScript缓存后重新编译
内容的提问来源于stack exchange,提问作者Руслан Ибрагимов

