所以我试图将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"
}
现在我做纱线安装。我看到安装了多个反应类型。一次为@ types / React。一个用于 @ types / React-redux 和 @ types / react-dom ,位于每个自己的node_modules文件夹中。这些模块内部安装的类型的版本与我在yarn.lock文件中看到的非常不同。
当我尝试编译时,我得到了像
这样的错误
错误TS2304:找不到名称'DetailedHTMLFactory'。
后续变量声明必须具有相同的类型
如果我复制了所有嵌套的@types并且只保留顶级@ types / react,则错误消失。 什么是更好的方法来做到这一点,以便不出现重复类型问题?
答案 0 :(得分:2)
由于您使用的是yarn
,因此最简单的方向可能是在package.json文件中使用resolutions
来强制列入特定版本,请参阅https://github.com/yarnpkg/yarn/pull/4105
除此之外,你必须弄清楚这些类型的哪些特定版本相互作用。基本上查看@types/react-dom
依赖项列表,然后在项目中包含相同版本的@types/react
。
答案 1 :(得分:0)
您应该尝试删除node_modules
文件夹,运行yarn cache clear
并重新安装所有内容。关于这种行为的打字稿回购有一个问题(我最近遇到了我的一个项目),我将尝试找到并链接到这个答案。
答案 2 :(得分:0)
所以我最后通过排除node_modules文件夹来解决这个问题。
将“node_modules”放在tsconfig.json的“exclude”部分。