Typescript 得到一场“风暴”;错误TS5055“;在VS代码中编译每个类型脚本上的消息

Typescript 得到一场“风暴”;错误TS5055“;在VS代码中编译每个类型脚本上的消息,typescript,visual-studio-code,Typescript,Visual Studio Code,我正在尝试使用VS代码1.6.1将基于JavaScript的express项目转换为TypeScript。我现在可以在TypeScript中添加新文件并将它们编译成JavaScript。但是,每次编译TypeScript文件时,我都会收到一长串错误——每个现有(遗留)JavaScript文件都有一个错误——说: 错误TS5055:无法写入文件XYZ.js,因为它将覆盖输入文件 我该怎么阻止这一切 我的tsconfig如下所示: { “编译器选项”:{ “模块”:“commonjs”, “源地图”

我正在尝试使用VS代码1.6.1将基于JavaScript的express项目转换为TypeScript。我现在可以在TypeScript中添加新文件并将它们编译成JavaScript。但是,每次编译TypeScript文件时,我都会收到一长串错误——每个现有(遗留)JavaScript文件都有一个错误——说:

错误TS5055:无法写入文件XYZ.js,因为它将覆盖输入文件

我该怎么阻止这一切

我的tsconfig如下所示:

{
“编译器选项”:{
“模块”:“commonjs”,
“源地图”:正确,
“观察”:没错,
“allowJs”:正确
}
}

发生此问题是因为TypeScript编译器试图传输所有内容,包括已经是JavaScript的文件,在这种情况下,它抱怨将覆盖其输入,这是可以理解的。我发现“include”和“exclude”语句的组合不能阻止这种行为

解决方案是向compilerOptions添加一个新字段“outDir”,如下所示

{
“编译器选项”:{
“模块”:“commonjs”,
“源地图”:正确,
“观察”:没错,
“allowJs”:正确,
“outDir”:“已生成”
}
}
这将导致tsc将项目中的所有ts和js复制到指定的文件夹中。不会再有那些讨厌的TS5055错误了


如果项目中的导入引用都是相对的,那么这样就可以了。否则,例如,如果Node.js项目在顶层使用“public”文件夹,则可能必须相应地修改代码中的路径引用。

将tsconfig.json中的
allowJs
true
更改为
false
,将告诉typescript编译器不要传输javascript文件。这应该可以解决问题


当生成
d.ts
时,默认情况下,该错误也会发生
tsc
获取在输出目录和子目录中找到的所有文件

假设您的输出位于
out
目录中,则必须将其排除在tsconfig.json中:

"compilerOptions": {
  // All the options you want...

  // Redirect output structure to the directory
  "outDir": "out"

  // Exclude here the directories you want ts do not compile...
  "exclude": [
    "out"
  ]
}

如果不需要编译,只需要检查错误,可以使用:
“noEmit”:true

我的问题有点不同-将新的
类型脚本
文件添加到现有配置中。

事实证明,它内部的导入存在问题,导致了一个循环,这就是我的编译失败的原因。

这正是我们想要的,非常好,谢谢!