javascript – Typescript转换是否处理将ES6转换为ES5?

前端之家收集整理的这篇文章主要介绍了javascript – Typescript转换是否处理将ES6转换为ES5?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用Angular 2和TypeScript编写应用程序.我想使用IE 11,Chrome 45等支持的js方法(尤其是数组的’filter’).
我的代码能否在旧版浏览器上运行?由于Typescript转换为vanilla js,我不确定它对ES6功能的作用.

解决方法

TypeScript允许您使用ES6中的新语言功能,它会将这些语言功能转换为ES5;但是,它不会为ES6中存在的内置函数添加polyfill,但在ES5中不存在.

如果您使用仅存在于ES6中并且目标为ES5的内置函数,则需要包含必要的polyfill,以便代码在ES5环境中工作.

例如,fill是在ES6中Array的原型中找到的新函数.

const result = ["first","second"].fill("all");

当你瞄准ES6时一切都很好.编译器将包含lib.es6.d.ts以及fill的定义而不是抱怨,因为它假定您将在存在fill函数的ES6环境中运行代码.

但是,当您定位ES5时,它将不包含lib.es6.d.ts并且会告诉您ES5环境中不存在该功能

error TS2399: Property ‘fill’ does not exist on type ‘string[]’.

解决此问题,您需要将填充添加到数组< T>项目定义文件中的接口:

interface Array<T> {
    fill(value: T,start?: number,end?: number): this;
}

包括polyfill.或使用自动为您做的事情.

猜你在找的JavaScript相关文章