如果我使用babel-polyfill,我可以使用Typescript定位ES6吗?

Dou*_*oug 2 javascript babel typescript ecmascript-6

我正在编写一个Typescript/React/Redux应用程序,它利用了现代ES6 +功能,如生成器和对象传播.

我目前正在设置我的tsconfig.json目标ES5,也包括babel-polyfill在我的应用程序中.

由于在大多数浏览器中ES6 比ES5 ,我更愿意从我的Typescript配置中定位ES6.但是,我担心我将无法支持尽可能多的浏览器.

babel-polyfill是否提供与转换为ES5目标相同水平的ES5支持?

Mat*_*ens 6

babel-polyfill是否提供与转换为ES5目标相同水平的ES5支持?

没有.

babel-polyfill添加缺少的ES6 运行时类和方法.例如,如果运行脚本的浏览器没有Promise或者Array.prototype.includes,它会将这些实现添加到全局范围中,以便在代码尝试使用它们时存在.

它无法为浏览器添加缺少对ES6 语法的支持.如果您的JavaScript代码包含ES6语法(例如class,...yield),那么ES5浏览器将无法解析您的代码.运行时没有额外的JavaScript代码可以改变浏览器解析代码的方式,因此polyfill对此没有帮助.

底线:如果您想使用ES6语法并仍然支持ES5浏览器,则必须将代码转换为ES5(通过从TypeScript定位ES5,或使用Babel转换).