@babel/plugin-transform-parameters
情報
このプラグインは@babel/preset-envに含まれています。
このプラグインはES2015のパラメータをES5に変換します。これには以下が含まれます。
- 分割代入パラメータ
- デフォルトパラメータ
- レストパラメータ
例
入力
JavaScript
function test(x = "hello", { a, b }, ...args) {
  console.log(x, a, b, args);
}
出力
JavaScript
function test() {
  var x =
    arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "hello";
  var _ref = arguments[1];
  var a = _ref.a,
    b = _ref.b;
  for (
    var _len = arguments.length,
      args = Array(_len > 2 ? _len - 2 : 0),
      _key = 2;
    _key < _len;
    _key++
  ) {
    args[_key - 2] = arguments[_key];
  }
  console.log(x, a, b, args);
}
インストール
- npm
- Yarn
- pnpm
npm install --save-dev @babel/plugin-transform-parameters
yarn add --dev @babel/plugin-transform-parameters
pnpm add --save-dev @babel/plugin-transform-parameters
注意点
デフォルトパラメータは、適切なセマンティクスを保持するために、`let`宣言にデシュガーされます。お使いの環境でこれがサポートされていない場合は、@babel/plugin-transform-block-scopingプラグインが必要です。
使用方法
設定ファイルを使用する(推奨)
babel.config.json
{
  "plugins": ["@babel/plugin-transform-parameters"]
}
CLI経由
シェル
babel --plugins @babel/plugin-transform-parameters script.js
Node API経由
JavaScript
require("@babel/core").transformSync("code", {
  plugins: ["@babel/plugin-transform-parameters"],
});
オプション
loose
boolean、デフォルトはfalse。
looseモードでは、デフォルト値を持つパラメータは関数のarityにカウントされます。これは、これらのパラメータが関数のarityに追加されない仕様とは異なる動作です。
注意
トップレベルのignoreFunctionLengthの仮定に移行することを検討してください。
babel.config.json
{
  "assumptions": {
    "ignoreFunctionLength": true
  }
}
`ignoreFunctionLength`の仮定の下では、JavaScriptエンジンは`arguments`を参照しない関数を完全に最適化するため、Babelはよりパフォーマンスの高いソリューションを生成します。独自のベンチマークを行い、このオプションがアプリケーションに適しているかどうかを判断してください。
JavaScript
// Spec behavior
function bar1(arg1 = 1) {}
bar1.length; // 0
// ignoreFunctionLength: true
function bar1(arg1 = 1) {}
bar1.length; // 1
ヒント
プラグインオプションの設定について詳しくは、こちらをご覧ください。