我跟着这个guide使用角度与.net mvc,但我没有成功。我尝试过这些解决方案仍无法解决问题。我在文件中有错误
打字稿\ node_modules \ @types \芯-JS \ index.d.ts
这是tsconfig和package.json,它们都位于项目的根目录中。
"dependencies": {
"@angular/animations": "^5.0.0",
"@angular/common": "^5.0.0",
"@angular/compiler": "^5.0.0",
"@angular/core": "^5.0.0",
"@angular/forms": "^5.0.0",
"@angular/http": "^5.0.0",
"@angular/platform-browser": "^5.0.0",
"@angular/platform-browser-dynamic": "^5.0.0",
"@angular/router": "^5.0.0",
"core-js": "^2.4.1",
"rxjs": "^5.5.2",
"zone.js": "^0.8.14",
"typings": "^1.3.2"
}
tsconfig
{
"compileOnSave": false,
"compilerOptions": {
"outDir": "./dist/out-tsc",
"sourceMap": true,
"declaration": false,
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es2017",
"typeRoots": [
"node_modules/@types"
],
"lib": [
"dom",
"es2017"
]
},
"exclude": [
"node_modules"
]
}
答案 0 :(得分:0)
不依赖于@types/core-js
包。对于通过
"lib": ["dom", "es2017"]
使用
"target": "es2017"
同样意味着相同但明确指定--lib
正如您所做的那样,这是一种良好的实践。
通过与DOM和ECMAScript API的最新声明重叠,@types/core-js
包大致描述了core-js
包提供的polyfill的结构,引入了声明冲突的极高可能性。此外,@types/core-js
包的维护远不如您已引用的lib.es2017.d.ts
声明。
由于您已列出了依赖项,并且@types/core-js
不在其中,因此可能会以传递方式进行安装。由于它包含全局声明,因此本质上存在问题。
要解决此问题,请在"types"
中明确设置tsconfig.json
属性。这可以控制TypeScript编译器包含 全局 @types
包。
以下是一个例子:
{
"compilerOptions": {
"types": [],
"module": "esnext",
"lib": ["dom", "es2017"]
}
}
要在此类设置中包含全局 @types
声明,您必须在新添加的属性中引用它们。
以下是一个例子:
{
"compilerOptions": {
"types": ["bootstrap", "mocha"],
"module": "esnext",
"lib": ["dom", "es2017"]
}
}
备注:强>
请确保明确依赖任何@types
软件包,方法是将它们与软件包管理器一起安装。依赖传递依赖性将导致非确定性构建,不可预测的CI失败以及一般混乱。
@types/core-js
包中包含超出ES2017范围的API声明。如果您需要访问这些类型,请将--lib
的规格编号值更改为esnext
,如
{
"compilerOptions": {
"lib": ["dom", "esnext"]
}
}
您有许多过时且不一致的依赖项。特别是"typings": "^1.3.2"
,非常旧,应该更新。 typings
也应安装为开发依赖项,这是所有包管理器支持的功能,包括typings
本身。