繁体   English   中英

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

[英]Can I target ES6 with Typescript if I am using babel-polyfill?

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

我目前正在将我的tsconfig.json目标设置为ES5并在我的应用程序中包含babel-polyfill polyfill。

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

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

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

没有。

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

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

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

简而言之,不,babel-polyfill不提供与转化相同水平的ES5支持。 文档声明它包括自定义再生器运行时以及core-js。

您可以查看core-js以查看它包含您需要的polyfill。 但是,对象扩展语法不能被填充,只能被转换。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM