【发布时间】:2018-06-01 12:40:55
【问题描述】:
我正在将一个项目从 Angular JS 升级到 Angular 4。TypeScript 已经在 Angular JS 项目中使用,在转换它之后,我在 Visual Studio 中遇到了数以千计的错误,用于第 3 方打字稿打字文件 (*.d .ts)。我在 Visual Studio 中的实际 TypeScript 文件中也遇到了一些错误。
当我使用命令行 TypeScript 编译器 (tsc) 时,TypeScript 代码编译成功,所以我想阻止对所有 *.d.ts 文件进行编译检查。
我已经查看了非常相似的问题的答案,这些问题建议如何忽略这些错误,但它们对我没有任何作用,其中大多数与 VS 2017 相关。
这是我尝试过的禁用编译检查的方法:
在 .csproj 文件中添加了“TypeScriptCompileBlocked”:
<PropertyGroup>
<TypeScriptCompileBlocked>true</TypeScriptCompileBlocked>
....
</PropertyGroup>
- 然后关闭并重新打开 VS
添加了 .eslintignore 文件
我已将 .eslintignore 文件添加到项目根目录,并设置忽略所有 *.d.ts 文件:
**/*.d.ts
**/node_modules/*
禁用 ESLint
在 VS 工具 > 选项下,我寻找了一个选项,但在 VS2015 中没有执行此操作的选项
tsconfig.json - 排除 node_modules 文件夹
"exclude": [
"./node_modules/*"
]
-- I've also tried --
"node_modules"
... and
"**/*.d.ts"
tsconfig.json - 设置“compileOnSave”:false
{
"compilerOptions": {
"compileOnSave": false
}
}
我还在“compilerOptions”中添加了以下内容:
"types": []
我还设置了各种其他 compilerOptions 来忽略错误,尽管我看到的错误与这些无关:
"noImplicitAny": false,
"suppressImplicitAnyIndexErrors": true,
"noStrictGenericChecks": true
我要怎么做才能忽略 *.d.ts 文件?这是我在文件 node_modules\@angular\common\src\directives\ng_class.d.ts 中看到的一些错误示例:
当前项目配置为:
- 编译器 (tsc) 版本 = 1.8
- TypeScript 版本 = 2.6.2(通过 npm 安装)
- 没有 TypeScript 配置选项直接通过 Visual Studio 项目设置(即在 .csproj 文件中)
我的完整 tsconfig.json:
{
"compilerOptions": {
"target": "es5",
"module": "ES2015",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"lib": [ "es2015", "dom" ],
"noImplicitAny": false,
"suppressImplicitAnyIndexErrors": true,
"noStrictGenericChecks": true
},
"include": [ "**/*.ts" ],
"exclude": [
"node_modules"
]
}
(关于我用于模块的值,这是 MicroSoft 文档所说的):
“ES6”和“ES2015”值可用于定位“ES5”或更低版本。
https://www.typescriptlang.org/docs/handbook/compiler-options.html
我也尝试过使用“commonjs”作为值
【问题讨论】:
-
.eslintignore不会帮助解决ts编译错误。tsconfig.ignore应该会有所帮助。在遇到同样的问题后,我曾一度进行过这项工作,但那是 2 年前的事了,我不再安装 VS 2015。假设您使用的是最新的 TypeScript (2.6.2),并且您安装了最新的 TS for VS 2015。如果是这种情况,请告诉我,我或许可以提供答案。 -
您可能缺少
"compilerOptions": {"types": []}}请在此问题中添加一些具体错误的示例以帮助确认。 -
感谢阿卢安。我试过你的建议,但没有奏效。我添加了一些错误的示例
-
它可以从命令行工作吗?
-
不幸的是,忽略在这里对您没有帮助。原因是它不适用。当一个导入被追踪到一个模块时,它总是被包含进来
标签: visual-studio typescript ecmascript-5