我对使用TypeScript和Webpack还比较新,但不幸的是,我的类型声明一直存在问题,我似乎无法解决。
简而言之,我的项目是一个ASP.NET MVC React应用程序,它使用NPM、TypeScript和Webpack来管理JavaScript依赖项。我遇到的问题是,尽管我的项目可以成功编译,但我有超过180个错误
,看起来像这样。
这里是错误控制台的图片:
TS2717 (TS) Subsequent property declarations must have the same type. Property 'webview' must be of type 'DetailedHTMLProps<WebViewHTMLAttributes<HTMLWebViewElement>, HTMLWebViewElement>', but here has type 'DetailedHTMLProps<WebViewHTMLAttributes<HTMLWebViewElement>, HTMLWebViewElement>'.
现在,如果我通过单击类型并按“转到定义”来仔细查看,我可以看到我的项目明显对同一类型定义了两个引用,如下所示:
问题是这两个文件似乎都是我的项目 tsconfig.json 文件的要求,因为没有它们就无法编译。
我的 tsconfig.json 如下:
{ "compilerOptions": { "module": "commonjs", "moduleResolution": "node", "target": "es5", "sourceMap": true, "lib": [ "es5", "es2017", "dom"] "removeComments": true, "typeRoots": [ "/node_modules/@types", "/Types/" ] }, "compileOnSave": false, "exclude": [ "/node_modules/", "/bin", "/obj" ] }
我的 package.json 文件长这样:
{ "name": "fungalai", "version": "1.0.0", "dependencies": { "react": "16.4.2", "react-dom": "16.4.2" }, "devDependencies": { "@types/flux": "3.1.7", "axios": "^0.18.0", "deep-diff": "^1.0.1", "babel-core": "^6.26.3", "babel-loader": "^7.1.4", "babel-polyfill": "^6.26.0", "babel-preset-es2015": "6.24.1", "babel-preset-react": "6.24.1", "babel-preset-stage-0": "^6.24.1", "create-react-class": "^15.6.3", "expose-loader": "^0.7.5", "jszip": "^3.1.5", "flux": "3.1.3", "ts-loader": "^4.3.0", "typescript": "3.0.1", "uglifyjs-webpack-plugin": "^1.2.5", "webpack": "^4.8.3", "webpack-cli": "^2.1.4" } }
我怀疑这个问题与我的tsconfig.json文件中的这一行有关:
"lib": [ "es5", "es2017", "dom"]
但如果我删除任何一个这些引用,我的项目将无法编译,因为一些类型明显是在这些库引用中定义的。请问有人可以帮助我正确地引用DOM和React在ASP.NET TypeScript中解决这个问题吗?
编辑: 我还尝试更改我的tsconfig.json文件以删除'lib'引用(假设我可以使用Polyfill)至 "lib": []。然而问题仍然存在。
global.d.ts
文件的完整路径是什么?假设这些来自React typings,看起来你可能安装了两个不兼容的React typings副本。 - Matt McCutchen