@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
}
}