是否有@babel/plugin可将String.prototype.at转译为兼容ES5的JS代码?
没有专门用于转换String.prototype.at的独立@babel/plugin,该方法属于ES2022新增的原型API,不属于语法特性,因此需要通过polyfill的方式实现低版本浏览器兼容,而非语法转换。
以下是两种可行的实现方案:
方案一:通过
@babel/preset-env自动注入polyfill
只要你的项目已安装core-js@3.16及以上版本(core-js从3.16版本开始加入了String.prototype.at的polyfill支持),修改babel配置中的@babel/preset-env参数即可:{ "presets": [ ["@babel/preset-env", { "targets": "你的项目兼容浏览器目标", "useBuiltIns": "usage", "corejs": 3.20 }] ] }配置完成后babel会自动检测代码中对
at方法的调用,按需注入对应的polyfill代码,不需要你手动修改业务代码。方案二:手动添加轻量polyfill
如果你不想引入core-js的相关依赖,也可以直接在项目入口文件最顶部添加如下代码,手动补全at方法实现:if (!String.prototype.at) { String.prototype.at = function (index) { const len = this.length; const relativeIndex = Number(index) || 0; const pos = relativeIndex >= 0 ? relativeIndex : len + relativeIndex; return pos < 0 || pos >= len ? undefined : this[pos]; }; }
内容的提问来源于stack exchange,提问作者skellertor
相关产品推荐
相关产品推荐

