很抱歉,如果这是一个nobb问题,但我正在构建一个Angular应用程序,而我当前的tsconfig.json文件在'compilerOptions'中将'es6'作为'target':
{
"compilerOptions": {
"target": "es6",
"module": "commonjs",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": false,
"noImplicitAny": false,
"types" : []
},
"exclude": [
"node_modules"
]
}
是否可以拥有多个目标?例如,我可以添加es5吗?我问的只是因为我正在阅读为es5编写的教程,但由于我的项目的当前状态,我需要使用es6 - 即,我不能降级。我的所有代码都必须符合es6 - 如果两者都包括在内,我会想象我的代码可以符合es5和es6。
答案 0 :(得分:7)
请记住,您还可以创建多个tsconfig文件,并使用extends功能创建一个覆盖大多数元素的基本tsconfig,然后创建两个覆盖目标的目标tsconfig。
基础tsconfig:
# uses dcast.data.table, much faster
library(data.table)
setDT(df)
dcast(df, store_id + year + event ~ item, fun.aggregate = sum, value.var='units')
ES5 tsconfig:
{
"compilerOptions": {
"module": "commonjs",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": false,
"noImplicitAny": false,
"types" : []
},
"exclude": [
"node_modules"
]
}
ES6 tsconfig:
{
"extends": "./base.json"
"compilerOptions": {
"target": "es5"
}
}
然后你只需要运行你需要的任何目标:{
"extends": "./base.json"
"compilerOptions": {
"target": "es6"
}
}
这并不意味着您的代码会同时符合两者;但是,您可以选择向扩展基础的每个tsconfig添加tsc -p ./es6.json
属性,并将输出编译为单独的目录。
答案 1 :(得分:2)
您只能为配置指定一个 target。 target
的{{1}}属性接受单个字符串值。
指定compilerOptions
作为目标将不限制您在ES6或更高版本中编写源代码,它只是确保编译的代码与仅了解ES5或更低版本的客户端兼容。 lambda表达式等功能将被编译为函数表达式。
ES5
这样的表达式会被编译为const foo = (bar) => bar.replace('\t', '');
,目标设置为var foo = function (bar) { return bar.replace('\t', ''); };
。
如果您需要将目标编译为ES5或ES6,那将真正取决于您的应用程序将使用哪些设备/浏览器,就兼容性而言,ES5在此时肯定会是一个更“安全”的选择。这是确定ES6 browser comparability的好资源。
希望这有助于澄清事情!