我正在编写一个 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 运行时类和方法。例如,如果运行您的脚本的浏览器没有 Promise
或 Array.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/