如何在tsconfig.json中设置'language_in'选项?

时间:2016-02-02 10:22:10

标签: javascript typescript google-closure-compiler tsconfig

我正在尝试解决使用闭包编译器使用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_inread the tsconfig.json spec影响的其他配置选项,我不确定如何解决。

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

2 个答案:

答案 0 :(得分:1)

TypeScript编译器使用

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

答案 1 :(得分:1)

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

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

因此更改tsconfig.json选项也会影响输出,这让我觉得这个过程是连接的。

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