TypeScript和React Native,编译时来自node_modules / @ types的数百个错误

时间:2019-01-10 19:44:36

标签: typescript

我目前正在将我的RN项目迁移到TypeScript。我已经完成了大部分的JS代码,现在当我运行tsc时,我得到了几百个似乎都是

的错误。
error TS 2717: Subsequent property declarations must have the same type. Property
  prop must be of the type TYPE,
  but here has type TYPE

例如:

error TS2717: Subsequent property declarations must have the same type.  Property
  'view' must be of type 'SVGProps<SVGViewElement>',
  but here has type 'SVGProps<SVGViewElement>'.

这令人困惑,因为列出的类型几乎总是相同。

我能够运行我的应用程序,仍然可以从tslint收到有用的消息,并且特定于我的代码的任何错误都显示在编译器错误列表的底​​部。

我的tsconfig.json当前是:

{
  "compilerOptions": {
    "allowJs": true,
    "target": "es2018",
    "outDir": "dist",
    "module": "commonjs",
    "sourceMap": true,
    "lib": ["esnext", "es7", "dom", "es6"],
    "jsx": "react-native",
    "strict": true,
    "allowSyntheticDefaultImports": true,
    "esModuleInterop": true,
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true,
    "types": ["react-native"]
  },
  "include": ["src/**/*"],
  "exclude": ["node_modules", "**/*.spec.ts"]
}

我尝试了各种解决方案,包括根据TypeScript文档将types设置为[],并将exclude设置为各种形式的node_modules,例如{{1} },./node_modules等,但这些更改都没有任何效果。

2 个答案:

答案 0 :(得分:1)

好的,我能够解决这个问题。我不太确定如何通过yarn管理依赖项,但是我的问题肯定是依赖项。

首先,我从依赖项中删除了所有@types/*库,然后删除了节点模块文件夹。

然后,尽管大多数教程和指南都会说,我只安装了@types/react-native,没有安装@types/react@types/react-native自己添加了反应类型。我认为@types/react的类型可能取决于节点的类型,并且通过显式安装它们,我引入了@types/react-native@types/node之间以及{{ 1}}和@types/react-native。我的项目现在编译没有错误。

答案 1 :(得分:0)

问题的根本原因似乎是 Typescript 编译器检查库。将 skipLibCheck: true 添加到 tsconfig.json 会跳过检查库。

详细解释见How to force tsc to ignore node_modules folder?