@babel/plugin-transform-object-rest-spread
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 →
Ce plugin est inclus dans @babel/preset-env, dans ES2018
Exemple
Propriétés Rest
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
let n = { x, y, ...z };
console.log(n); // { x: 1, y: 2, a: 3, b: 4 }
Installation
- npm
- Yarn
- pnpm
- Bun
npm install --save-dev @babel/plugin-transform-object-rest-spread
yarn add --dev @babel/plugin-transform-object-rest-spread
pnpm add --save-dev @babel/plugin-transform-object-rest-spread
bun add --dev @babel/plugin-transform-object-rest-spread
Utilisation
Avec un fichier de configuration (Recommandé)
{
"plugins": ["@babel/plugin-transform-object-rest-spread"]
}
Via CLI
babel --plugins @babel/plugin-transform-object-rest-spread script.js
Via l'API Node
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).
Envisagez de migrer vers l'assomption de haut niveau setSpreadProperties.
{
"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
{
"assumptions": {
"setSpreadProperties": true
},
"plugins": [
["@babel/plugin-transform-object-rest-spread", { "useBuiltIns": true }]
]
}
Entrée
z = { x, ...y };
Sortie
z = Object.assign({ x }, y);
Vous pouvez en savoir plus sur la configuration des options de plugin ici