Javascript 如果我使用的是babel polyfill,我可以用Typescript将ES6作为目标吗?

Javascript 如果我使用的是babel polyfill,我可以用Typescript将ES6作为目标吗?,javascript,typescript,ecmascript-6,babeljs,Javascript,Typescript,Ecmascript 6,Babeljs,我正在编写一个Typescript/React/Redux应用程序,它利用了现代ES6+功能,如生成器和对象扩展 我目前正在将我的tsconfig.json目标设置为ES5,并在我的应用程序中包括babel polyfill 因为在大多数浏览器中ES6比ES5好,所以我更愿意从我的Typescript配置中以ES6为目标。然而,我担心我将无法支持如此多的浏览器 babel polyfill是否提供与传输到ES5目标相同级别的ES5支持 babel polyfill是否提供与传输到ES5目标相同级

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

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

因为在大多数浏览器中ES6比ES5好,所以我更愿意从我的Typescript配置中以ES6为目标。然而,我担心我将无法支持如此多的浏览器

babel polyfill是否提供与传输到ES5目标相同级别的ES5支持

babel polyfill是否提供与传输到ES5目标相同级别的ES5支持

没有

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

它不能向浏览器添加缺少的对ES6语法的支持。如果您的JavaScript代码包含ES6语法(例如,
..
屈服
),则ES5浏览器将无法解析您的代码。运行时任何额外的JavaScript代码都不能改变浏览器解析代码的方式,因此polyfill在这方面没有帮助


一句话:如果你想使用ES6语法并且仍然支持ES5浏览器,你必须将你的代码转换成ES5(或者通过从TypeScript以ES5为目标,或者通过使用Babel进行转换)。

简言之,不,Babel polyfill不提供与transpiling相同级别的ES5支持。声明它包括一个自定义再生器运行时以及核心js


您可以查看它是否包含所需的多边形填充。但是,对象排列语法不能是polyfill,只能是transpile。

polyfill应该与es5目标一起使用。而不是。我不确定链接是否显示es6比es5快。无论如何,这种担心都可以被认为是过早的优化。