一起使用 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" 部分。