一起使用 react、reactdom 和 react-redux 类型时出现重复类型错误
Duplicate Types error when using react, reactdom and react-redux types together
所以我正在尝试将 react-redux 与 typescript 一起使用。这就是我的 package.json 的样子
"dependencies": {
"@types/react-dom": "15.5.0",
"@types/react": "15.0.4",
"@types/react-redux": "4.4.39",
"axios": "0.16.2",
"react": "15.0.0",
"react-dom": "15.0.0",
"redux": "3.6.0",
"react-redux": "5.0.6",
"redux-thunk": "2.1.0",
"office-ui-fabric-react": "1.0.0"
}
现在,当我执行 yarn 安装时 。我看到安装了多种反应类型。一次为@types/React。一个用于 @types/React-redux 和 @types/react-dom 在每个 node_modules 文件夹中。正如我在 yarn.lock 文件中看到的那样,这些模块内部安装的类型的版本非常不同。
当我尝试编译它时,我得到类似
的错误
错误 TS2304:找不到名称 'DetailedHTMLFactory'。
后续的变量声明必须具有相同的类型
如果我复制所有嵌套的@types 并只保留顶级@types/react,错误就会消失。
有什么更好的方法可以避免出现重复类型问题?
由于您使用的是 yarn
,最简单的方法可能是在 package.json 文件中使用 resolutions
来强制输入特定版本,请参阅 https://github.com/yarnpkg/yarn/pull/4105
除此之外,您必须弄清楚这些类型的哪些特定版本可以相互配合。基本上查看 @types/react-dom
依赖列表,然后在您的项目中包含相同版本的 @types/react
。
您应该尝试删除 node_modules
文件夹,运行 yarn cache clear
并重新安装所有内容。 typescript repo 上有一个关于此行为的问题(我最近 运行 参与了我的一个副项目),我将尝试找到并 link 这个答案。
所以我最终通过排除 node_modules 文件夹解决了这个问题。
将 "node_modules" 放入 tsconfig.json 的 "exclude" 部分。
所以我正在尝试将 react-redux 与 typescript 一起使用。这就是我的 package.json 的样子
"dependencies": {
"@types/react-dom": "15.5.0",
"@types/react": "15.0.4",
"@types/react-redux": "4.4.39",
"axios": "0.16.2",
"react": "15.0.0",
"react-dom": "15.0.0",
"redux": "3.6.0",
"react-redux": "5.0.6",
"redux-thunk": "2.1.0",
"office-ui-fabric-react": "1.0.0"
}
现在,当我执行 yarn 安装时 。我看到安装了多种反应类型。一次为@types/React。一个用于 @types/React-redux 和 @types/react-dom 在每个 node_modules 文件夹中。正如我在 yarn.lock 文件中看到的那样,这些模块内部安装的类型的版本非常不同。
当我尝试编译它时,我得到类似
的错误
错误 TS2304:找不到名称 'DetailedHTMLFactory'。
后续的变量声明必须具有相同的类型
如果我复制所有嵌套的@types 并只保留顶级@types/react,错误就会消失。 有什么更好的方法可以避免出现重复类型问题?
由于您使用的是 yarn
,最简单的方法可能是在 package.json 文件中使用 resolutions
来强制输入特定版本,请参阅 https://github.com/yarnpkg/yarn/pull/4105
除此之外,您必须弄清楚这些类型的哪些特定版本可以相互配合。基本上查看 @types/react-dom
依赖列表,然后在您的项目中包含相同版本的 @types/react
。
您应该尝试删除 node_modules
文件夹,运行 yarn cache clear
并重新安装所有内容。 typescript repo 上有一个关于此行为的问题(我最近 运行 参与了我的一个副项目),我将尝试找到并 link 这个答案。
所以我最终通过排除 node_modules 文件夹解决了这个问题。
将 "node_modules" 放入 tsconfig.json 的 "exclude" 部分。