2

我正在尝试解决使用闭包编译器缩小我的 TypeScript 应用程序时收到的警告,使用我的tsconfig.json.

我目前的配置:

{
  "compilerOptions": {
    "target": "es5",
    "module": "system",
    "noImplicitAny": false,
    "removeComments": true,
    "preserveConstEnums": true,
    "outFile": "app.js",
    "sourceMap": true
  },
  "files": [ ... ]
}

但是,对于关键字的使用,我收到以下警告deletefinally并且abstract

警告 - 在旧版本的 JavaScript 中,不允许将关键字和保留字作为不带引号的属性名称。如果您的目标是较新版本的 JavaScript,请设置适当的 language_in 选项。

我确实看到了答案,如何为 Closure 编译器设置 language_in 选项?这建议使用--compiler_flags="--language_in=ECMASCRIPT5"来解决,但这就是我认为"target": "es5"在我的tsconfig.json?

因此,尽管已target设置,但我看不到其他配置选项与language_in阅读规范tsconfig.json一样,但我不确定如何解决。

显然,我可以引用属性名称,或者忽略警告,但我希望解决警告,因为我不针对旧浏览器。

4

2 回答 2

1

我错误地认为 TypeScript 编译器使用 Closure 编译器在编译后缩小生成的 JavaScript 文件,因为这些错误已作为 TypeScript 编译器的输出记录在 WebStorm IDE 中。所以 WebStorm 让我走错了路。

但是错误消息来自一个单独的 Closure 编译器文件观察器,它会在 TypeScript 编译器运行后运行。

因此,更改tsconfig.json选项也确实影响了输出,让我认为这个过程是相互关联的。

跟踪文件观察程序后,我可以使用问题中指出的编译器标志修改其中的选项。

于 2016-02-02T17:43:32.523 回答
1

tsconfig.json由 TypeScript 编译器使用,将 Closure 编译器选项推到那里是行不通的,而且 Closure 编译器无论如何也不知道该怎么做tsconfig.json。Closure 编译器的输入应该是 JavaScript(ES3、ES5 或 ES6),而不是 TypeScript,因此您需要设置构建过程以将 TypeScript 源代码编译为 JavaScript,然后将 JavaScript 提供给 Closure 编译器。在问题中,您将选项链接到 Closure 编译器在调用它时在命令行上传递。

于 2016-02-02T16:01:18.800 回答