Aller au contenu principal

@babel/plugin-transform-object-rest-spread

Traduction Bêta Non Officielle

Cette page a été traduite par PageTurner AI (bêta). Non approuvée officiellement par le projet. Vous avez trouvé une erreur ? Signaler un problème →

info

Ce plugin est inclus dans @babel/preset-env, dans ES2018

Exemple

Propriétés Rest

JavaScript
let { x, y, ...z } = { x: 1, y: 2, a: 3, b: 4 };
console.log(x); // 1
console.log(y); // 2
console.log(z); // { a: 3, b: 4 }

Propriétés Spread

JavaScript
let n = { x, y, ...z };
console.log(n); // { x: 1, y: 2, a: 3, b: 4 }

Installation

npm install --save-dev @babel/plugin-transform-object-rest-spread

Utilisation

Avec un fichier de configuration (Recommandé)

babel.config.json
{
"plugins": ["@babel/plugin-transform-object-rest-spread"]
}

Via CLI

Shell
babel --plugins @babel/plugin-transform-object-rest-spread script.js

Via l'API Node

JavaScript
require("@babel/core").transformSync("code", {
plugins: ["@babel/plugin-transform-object-rest-spread"],
});

Options

Par défaut, ce plugin produira du code conforme aux spécifications en utilisant l'assistant objectSpread de Babel.

loose

boolean, valeur par défaut : false.

Activer cette option utilisera l'assistant extends de Babel, qui est fondamentalement équivalent à Object.assign (voir useBuiltIns ci-dessous pour l'utiliser directement).

attention

Envisagez de migrer vers l'assomption de haut niveau setSpreadProperties.

babel.config.json
{
"assumptions": {
"setSpreadProperties": true
}
}

Notez que bien qu'ils soient quasiment équivalents, il existe une différence importante entre l'opérateur spread et Object.assign : l'opérateur spread définit de nouvelles propriétés tandis que Object.assign() les _affecte_, ce qui peut produire des résultats inattendus dans certains cas avec ce mode.

Pour des explications détaillées, consultez Spread VS. Object.assign et Assignation VS. définition de propriétés.

useBuiltIns

boolean, valeur par défaut : false.

Activer cette option utilisera Object.assign directement au lieu de l'assistant extends de Babel.

Exemple

.babelrc

JSON
{
"assumptions": {
"setSpreadProperties": true
},
"plugins": [
["@babel/plugin-transform-object-rest-spread", { "useBuiltIns": true }]
]
}

Entrée

JavaScript
z = { x, ...y };

Sortie

JavaScript
z = Object.assign({ x }, y);
astuce

Vous pouvez en savoir plus sur la configuration des options de plugin ici

Références