Vai al contenuto principale

7.2.0 rilasciato: metodi privati delle istanze

· Lettura di 4 min
Traduzione Beta Non Ufficiale

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)

JavaScript
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.

JavaScript
// "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:

JavaScript
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:


Discuti su Twitter