我有一个带有javascript代码库的项目。我想开始逐渐转向打字稿,并确保现有的JavaScript代码保持在ES5级别。即保证ES6功能将被转换为ES5。
我认为这可以通过将tsc引入构建链来解决。 tsconfig.json具有ES5的目标,并且tsc设置为处理两个typescript ja javascript文件。
但显然tsc不会将javascript文件转换为ES5级别。或者我在设置中遗漏了什么?
我的猜测是我仍然需要为构建链添加babel以确保将在浏览器中执行的所有代码都处于ES5级别。
以下简单示例:
tstest.js包含ES6功能:
var arr = ["a", "b", "c"];
console.log(arr.includes("b"));
javascript:
没有进行透明化/tmp> tsc -t ES5 -allowJs -outDir ./transpiled tstest.js
/tmp> cat transpiled/tstest.js
var arr = ["a", "b", "c"];
console.log(arr.includes("b"));
答案 0 :(得分:0)
现在发现它。 Array.includes在ES2016中的功能,因此没有被编译。例如。即使在javascript源代码中,箭头函数也会相应地转换为ES5级别:
/tmp> cat tstest.js
const f = a => 2 * a;
console.log(f(5));
tsc之后的结果:
/tmp> tsc -t ES5 -allowJs -outDir ./transpiled tstest.js
/tmp> cat transpiled/tstest.js
var f = function (a) { return 2 * a; };
console.log(f(5));