【问题标题】:How do I set 'language_in' option in tsconfig.json?如何在 tsconfig.json 中设置“language_in”选项?
【发布时间】:2016-02-02 10:22:09
【问题描述】:

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

我目前的配置:

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

但是,我收到以下警告,因为使用关键字 deletefinallyabstract

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

我确实看到了答案,How can I set the language_in option for the Closure compiler? 建议使用--compiler_flags="--language_in=ECMASCRIPT5" 来解决,但这就是我认为"target": "es5" 在我的tsconfig.json 中所做的事情?

因此,尽管设置了target,但我看不到与language_in 具有read the tsconfig.json spec 效果的其他配置选项,但我不确定如何解决。

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

【问题讨论】:

    标签: javascript typescript google-closure-compiler tsconfig


    【解决方案1】:

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

    【讨论】:

    • 虽然我很感激你不能将tsconfig.json 直接加载到闭包编译器中。我错误地认为 TypeScript 编译器将选项传递给 Closure 编译器(作为内置的缩小支持)。但事实证明,该过程由 WebStorm IDE 中的一个单独文件运行,即使 IDE 报告该错误源自 TypeScript 编译器。
    【解决方案2】:

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

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

    因此,更改 tsconfig.json 选项也确实影响了输出,让我认为进程已连接。

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

    【讨论】:

      猜你喜欢
      • 2012-10-27
      • 2018-12-08
      • 2010-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-30
      • 1970-01-01
      • 2016-01-16
      相关资源
      最近更新 更多