考虑一下:
const a = BigInt(2);
const b = BigInt(2);
const c = a ** b;
Babel会将其转换为:
var a = BigInt(2);
var b = BigInt(2);
var c = Math.pow(a, b);
但是,Math.pow
与BigInt
不兼容。据我所知,让Babel忽略某一行是不可能的。我找到了babel-plugin-transform-bigint
,但是我不想为此加载一个polyfill。如果不支持BigInt
,那么我将为输入设置一个上限。
我的选择是覆盖Math.pow
或手动实现幂运算。
**
运算符与BigInt
和Babel一起使用吗?
还要确认一下,**
如果不受支持,将是语法错误?
编辑:babel.config.js:
module.exports = {
presets: [
['@babel/preset-env', {
useBuiltIns: 'usage',
corejs: '2',
exclude: [
'babel-plugin-transform-async-to-generator',
'babel-plugin-transform-regenerator',
],
}],
],
plugins: [
'@babel/plugin-syntax-dynamic-import',
['@babel/plugin-transform-react-jsx', { pragma: 'h' }],
'@babel/plugin-proposal-do-expressions',
'@babel/plugin-proposal-class-properties',
'@babel/plugin-proposal-optional-chaining',
/*
Async/await increases file size by a lot.
['module:fast-async', {
'compiler': { 'promises': true, 'generators': false, 'useRuntimeModule': true },
}],
['@babel/plugin-transform-modules-commonjs', {
'strictMode': false,
}],
*/
],
env: {
production: {
plugins: ['transform-react-remove-prop-types'],
},
},
sourceType: 'unambiguous',
};