7.2.0 rilasciato: metodi privati delle istanze
Questa pagina è stata tradotta da PageTurner AI (beta). Non ufficialmente approvata dal progetto. Hai trovato un errore? Segnala problema →
Abbiamo appena rilasciato una nuova versione minore di Babel!
Questa release include il supporto per i metodi privati delle istanze e una serie di correzioni di bug relativi ai tipi Flow e TypeScript. Puoi leggere l'intero changelog su GitHub.
Molti nuovi contributori hanno risolto bug o implementato nuove funzionalità in questa release: un grazie a Gcaufy, Grigory Moroz, Paul Happ, Tim McClure e Veaceslav Cotruta!
Un grande ringraziamento a Bloomberg per aver sponsorizzato l'implementazione degli elementi privati delle classi! Questo supporto per i metodi privati delle istanze è un seguito ai campi privati statici rilasciati in Babel 7.1.0.
Se tu o la tua azienda volete supportare Babel e l'evoluzione di JavaScript, ma non sapete come, potete donare su OpenCollective e, meglio ancora, collaborare direttamente con noi all'implementazione delle nuove proposte ECMAScript!
Metodi Privati delle Istanze (#8654)
class Person {
#age = 19;
#increaseAge() {
this.#age++;
}
birthday() {
this.#increaseAge();
alert("Happy Birthday!");
}
}
Grazie a Tim per aver implementato questa proposta, e a Nicolò e Justin per le revisioni!
Puoi testare i metodi privati aggiungendo il plugin @babel/plugin-proposal-private-methods alla tua configurazione di Babel, o abilitando il preset stage-3 nella repl.
Anche gli accessori privati stanno arrivando, e abbiamo effettuato un importante refactoring interno che ci consentirà di aggiungere presto il supporto per gli elementi privati ai decoratori 🎉.
Parsing dell'Operatore Pipeline "Smart" (#8289)
Grazie al lavoro di James DiGioia e J. S. Choi, @babel/parser ora può anche analizzare l'Operatore Pipeline Smart, oltre alla versione minima.
Attualmente supportiamo solo il "nucleo" della proposta smart pipeline, e non le funzionalità aggiuntive. Inoltre, supportiamo temporaneamente solo # come segnaposto preliminare. Il segnaposto effettivo non è ancora stato deciso, e altre possibilità come ?, @ e % potrebbero essere supportate sperimentalmente da @babel/parser in futuro.
// "Smart"
const result = 2 |> double |> 3 + # |> toStringBase(2, #); // "111"
// "Simple"
const result = 2 |> double |> (x => 3 + x) |> (x => toStringBase(2, x));
Babel implementa più varianti di questa proposta per aiutare TC39 a testare e raccogliere feedback dalla comunità. Come per tutte le proposte, aspettatevi cambiamenti futuri.
Se stai utilizzando direttamente @babel/parser e vuoi testare questa proposta, puoi passare l'opzione proposal: "smart" al plugin pipeline:
const ast = babel.parse(code, {
plugins: [
["pipelineOperator", { proposal: "smart" }]
]
})
Non supportiamo ancora la transpilazione di questa sintassi, ma arriverà presto.
Nomi dei Plugin (#8769)
Ogni plugin ufficiale fornisce ora a Babel il proprio nome identificativo. Sebbene ciò non influisca sull'utilizzo normale di Babel, garantisce un identificatore coerente per ogni plugin. Questa funzionalità è particolarmente utile per strumenti come Time Travel, che permettono di visualizzare esattamente le trasformazioni applicate da ciascun plugin al codice. Puoi osservare questa funzionalità in azione tramite la nostra repl:
