我正在尝试解决使用闭包编译器使用tsconfig.json
缩小我的TypeScript应用程序时收到的警告。
我目前的配置:
{
"compilerOptions": {
"target": "es5",
"module": "system",
"noImplicitAny": false,
"removeComments": true,
"preserveConstEnums": true,
"outFile": "app.js",
"sourceMap": true
},
"files": [ ... ]
}
但是,对于关键字delete
,finally
和abstract
的使用,我收到以下警告:
警告 - 旧版本的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影响的其他配置选项,我不确定如何解决。
显然,我可以引用属性名称,或忽略警告,但我希望解决警告,因为我不针对旧浏览器。
答案 0 :(得分:1)
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
选项也会影响输出,这让我觉得这个过程是连接的。
跟踪文件观察程序后,我可以使用编译器标志中提到的来修改其中的选项。