Visual Studio 2017 React项目集成antd遇TS2694错误求助
我之前在VS2017的ASP.NET Core React模板项目里加antd也碰到过一模一样的问题!这本质是因为VS2017默认生成的项目里,@types/react和@types/react-dom的版本太老,不支持antd 3.x依赖的React类型定义(比如DetailedReactHTMLElement、TextareaHTMLAttributes这些都是较新的React类型)。
下面是我亲测有效的解决步骤:
第一步:检查并升级React类型定义包
先看看你当前的@types/react版本,打开package.json或者在终端运行:npm list @types/reactVS2017的模板默认带的版本通常低于16.x,而antd 3.1.0需要至少React 16.x的类型支持。我们直接卸载旧版本再安装兼容的版本:
# 卸载旧的类型包 npm uninstall @types/react @types/react-dom --save-dev # 安装适配antd 3.1.0的版本(亲测这个版本组合没问题) npm install @types/react@16.4.14 @types/react-dom@16.0.7 --save-dev第二步:清理依赖并重新安装
有时候旧的缓存会导致问题,我们清理一下node_modules再重新安装:# Windows系统 rd /s /q node_modules && npm install # Mac/Linux系统 rm -rf node_modules && npm install第三步:检查TypeScript配置(可选)
打开项目根目录的tsconfig.json,确保compilerOptions里有这些配置:{ "compilerOptions": { "target": "es6", "moduleResolution": "node", "lib": ["dom", "es2017"] } }这些配置能保证TypeScript正确解析React的DOM类型和ES6+语法。
第四步:重启VS2017并重新编译
VS有时候会缓存旧的类型信息,重启一下IDE,然后重新生成项目,应该就能解决那些TS2694错误了。
如果还是有问题,可以尝试把antd的版本微调一下(比如升级到3.2.0,和新的类型包更匹配),不过我用上面的步骤解决了和你完全一样的问题,应该没问题。
内容的提问来源于stack exchange,提问作者Benoit Soyeux

