我目前正在将我的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
等,但这些更改都没有任何效果。
答案 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
会跳过检查库。