@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
ヒント
プラグインオプションの設定について詳しくは、こちらをご覧ください。