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

标签 javascript typescript ecmascript-6 babeljs

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

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

因为 ES6 是 faster与大多数浏览器中的 ES5 相比,我更愿意从我的 Typescript 配置中以 ES6 为目标。但是,我担心我将无法支持尽可能多的浏览器。

babel-polyfill 是否提供与转译为 ES5 目标相同级别的 ES5 支持?

最佳答案

Does babel-polyfill provide the same level of ES5 support as transpiling to an ES5 target?

没有。

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

它无法向浏览器添加对 ES6 syntax 的缺失支持。如果您的 JavaScript 代码包含 ES6 语法(例如 class...yield),那么 ES5 浏览器将无法解析您的代码。运行时再多的 JavaScript 代码也无法改变浏览器解析代码的方式,因此 polyfill 对此无济于事。

底线:如果您想使用 ES6 语法并仍然支持 ES5 浏览器,则必须将您的代码转换为 ES5(通过从 TypeScript 以 ES5 为目标,或通过使用 Babel 进行转换)。

关于javascript - 如果我使用 babel-polyfill,我可以使用 Typescript 来定位 ES6 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44400929/

相关文章:

typescript - 用户定义的类型保护 [ typescript ]

javascript - 使用字符串中数组的每个元素组成标准化的句子

javascript - 监听指令内的取消选中事件

javascript - 无法访问对象属性(奇怪,因为它应该像往常一样工作)

javascript - 我无法用全名填充 <input> 值,只显示名字

javascript - 在顶层将 Redux 连接到我的应用程序不起作用

typescript - void 作为 TypeScript 中泛型函数的参数类型

vue.js - 如何在 vue.config.js 中使用 ES6?

javascript - 对象.defineProperty : setters for dom elements properties

javascript - 在node.js中让for循环等待函数停止