如何在Babel中使用BigInt求幂?

时间:2019-09-12 07:45:45

标签: javascript babeljs

考虑一下:

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.powBigInt不兼容。据我所知,让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',
};

0 个答案:

没有答案