@babel/plugin-transform-private-property-in-object
Questa pagina è stata tradotta da PageTurner AI (beta). Non ufficialmente approvata dal progetto. Hai trovato un errore? Segnala problema →
Questo plugin è incluso in @babel/preset-env, nella specifica ES2022
Esempio
In
class Foo {
#bar = "bar";
test(obj) {
return #bar in obj;
}
}
Out
class Foo {
constructor() {
_bar.set(this, {
writable: true,
value: "bar",
});
}
test() {
return _bar.has(this);
}
}
var _bar = new WeakMap();
Installazione
- npm
- Yarn
- pnpm
- Bun
npm install --save-dev @babel/plugin-transform-private-property-in-object
yarn add --dev @babel/plugin-transform-private-property-in-object
pnpm add --save-dev @babel/plugin-transform-private-property-in-object
bun add --dev @babel/plugin-transform-private-property-in-object
Utilizzo
Con un file di configurazione (Consigliato)
{
"plugins": ["@babel/plugin-transform-private-property-in-object"]
}
Tramite CLI
babel --plugins @babel/plugin-transform-private-property-in-object
Tramite Node API
require("@babel/core").transformSync("code", {
plugins: ["@babel/plugin-transform-private-property-in-object"],
});
Opzioni
loose
boolean, predefinito false.
L'impostazione di configurazione loose deve essere identica a quella di @babel/transform-class-properties.
Quando impostata su true, le espressioni in per le proprietà private controlleranno le proprietà proprie (anziché ereditate) dell'oggetto, invece di verificare la presenza all'interno di un WeakSet. Ciò migliora
prestazioni e debugging (accesso diretto alle proprietà vs .get()) al costo
della potenziale diffusione di "privati" tramite metodi come Object.getOwnPropertyNames.
Considera di migrare all'assunzione di primo livello privateFieldsAsProperties.
{
"assumptions": {
"privateFieldsAsProperties": true,
"setPublicClassFields": true
}
}
Nota che sia privateFieldsAsProperties che setPublicClassFields devono essere impostati su true.
Esempio
In
class Foo {
#bar = "bar";
test(obj) {
return #bar in obj;
}
}
Out
class Foo {
constructor() {
Object.defineProperty(this, _bar, {
writable: true,
value: "bar",
});
}
test() {
return Object.prototype.hasOwnProperty.call(this, _bar);
}
}
var _bar = babelHelpers.classPrivateFieldLooseKey("bar");
Maggiori informazioni sulla configurazione delle opzioni del plugin sono disponibili qui