typeScript转换和创建跨浏览器友好的代码

时间:2017-12-11 06:34:03

标签: javascript typescript internet-explorer

TypeScript是否会删除您是否应该使用这样的代码(当您知道IE等浏览器可能不支持indexOf时)?

arrValues.indexOf('Sam') > -1

TypeScript转换过程是否产生了保证在所有浏览器中运行的正确JavaScript代码? (假设TypeScript配置设置为ES5)。

1 个答案:

答案 0 :(得分:1)

TypeScript确实执行了许多低级编译,但indexOf不是其中之一。如果您要定位ECMAScript 5,则无论如何都会包含indexOf,因为它位于specification - 但即使您要定位ECMAScript 3,也不会为您修复。

在所有情况下,低级编译都在标准版本之间,而不是平滑浏览器兼容性。

下面是两个低级编译示例。在每种情况下,输出取决于您使用target: "ES5"标记定位的版本。

let / const

打字稿。允许使用块范围的变量。

const x = 'loaded';

{
    const x = 'new value';
}

// loaded
console.log(x);

的JavaScript。内部变量x被重命名为x_1以防止命名冲突。

var x = 'loaded';
{
    var x_1 = 'new value';
}
// loaded
console.log(x);

迭代

打字稿。允许使用for-of循环。

const x = "loaded";

for (const char of x) {
    console.log(char);
}

的JavaScript。循环转换为远不那么优雅但适度更兼容的循环。

var x = "loaded";
for (var _i = 0, x_1 = x; _i < x_1.length; _i++) {
    var char = x_1[_i];
    console.log(char);
}