将react,reactdom和react-redux类型结合使用时出现重复类型错误

时间:2017-09-16 09:21:52

标签: reactjs typescript react-redux tsc react-dom

所以我试图将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,则错误消失。 什么是更好的方法来做到这一点,以便不出现重复类型问题?

3 个答案:

答案 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”部分。