@babel/plugin-transform-destructuring
このプラグインは@babel/preset-env
に含まれています。
例
入力
let { x, y } = obj;
let [a, b, ...rest] = arr;
出力
function _toArray(arr) { ... }
let _obj = obj,
x = _obj.x,
y = _obj.y;
let _arr = arr,
_arr2 = _toArray(_arr),
a = _arr2[0],
b = _arr2[1],
rest = _arr2.slice(2);
インストール
- npm
- Yarn
- pnpm
npm install --save-dev @babel/plugin-transform-destructuring
yarn add --dev @babel/plugin-transform-destructuring
pnpm add --save-dev @babel/plugin-transform-destructuring
使用法
設定ファイルを使用する(推奨)
{
"plugins": ["@babel/plugin-transform-destructuring"]
}
CLI経由
babel --plugins @babel/plugin-transform-destructuring script.js
Node API経由
require("@babel/core").transformSync("code", {
plugins: ["@babel/plugin-transform-destructuring"],
});
オプション
loose
boolean
、デフォルトはfalse
です。
このオプションを有効にすると、分割代入したいものが配列であると仮定し、他のイテラブルに対してArray.from
を使用しません。
トップレベルのiterableIsArray
アサンプションへの移行を検討してください。
{
"assumptions": {
"iterableIsArray": true
}
}
useBuiltIns
boolean
、デフォルトはfalse
です。
このオプションを有効にすると、Babelのextends
ヘルパーの代わりにObject.assign
を直接使用します。
例
.babelrc
{
"plugins": [
["@babel/plugin-transform-destructuring", { "useBuiltIns": true }]
]
}
入力
var { ...x } = z;
出力
var _z = z,
x = Object.assign({}, _z);
プラグインオプションの設定についてはこちらをご覧ください。
allowArrayLike
boolean
、デフォルトはfalse
追加: v7.10.0
このオプションは、配列の分割代入構文を使用して、配列のようなオブジェクトを分割代入することを許可します。
配列のようなオブジェクトとは、length
プロパティを持つオブジェクトのことです。たとえば、{ 0: "a", 1: "b", length: 2 }
です。実際の配列と同様に、配列のようなオブジェクトには「穴」がある場合があることに注意してください。{ 1: "a", length: 3 }
は、[ (穴), "a", (穴) ]
と同等です。
配列のようなオブジェクトを配列であるかのように分割代入することは仕様に準拠していませんが、Symbol.iterator
サポートを備えた最近のブラウザーではイテラブルとなる多くのオブジェクトがあります。注目すべき例としては、document.querySelectorAll("img.big")
のようなDOMコレクションがあり、これがこのオプションの主なユースケースです。
Babelでは、このオプションが無効になっていても、古いエンジンでarguments
の分割代入が許可されていることに注意してください。これは、ECMAScript仕様でイテラブルとして定義されているためです。
トップレベルのarrayLikeIsIterable
アサンプションへの移行を検討してください。
{
"assumptions": {
"arrayLikeIsIterable": true
}
}