7.16.0 Rilasciato: ESLint 8 e TypeScript 4.5
Questa pagina è stata tradotta da PageTurner AI (beta). Non ufficialmente approvata dal progetto. Hai trovato un errore? Segnala problema →
Abbiamo appena pubblicato Babel 7.16.0!
Questa versione abilita per impostazione predefinita i blocchi di inizializzazione statici delle classi. Include il supporto per una nuova variante della proposta dell'operatore pipeline, nonché la compatibilità con TypeScript 4.5.
Inoltre, @babel/eslint-parser supporta ora ESLint 8.
Puoi leggere l'intero changelog su GitHub.
Se tu o la tua azienda volete supportare Babel e l'evoluzione di JavaScript, ma non sapete come, potete donare sul nostro Open Collective e, ancora meglio, collaborare direttamente con noi all'implementazione di nuove proposte ECMAScript! Essendo un progetto gestito da volontari, dipendiamo dal supporto della comunità per finanziare i nostri sforzi nel supportare la vasta gamma di utenti JavaScript. Contattaci a team@babeljs.io per discutere insieme!
Novità principali
Blocchi statici delle classi abilitati per impostazione predefinita (#13713)
class MyClass {
static {
doSomeInitialization(MyClass);
console.log("MyClass initialized!");
}
}
I blocchi statici, che hanno raggiunto lo Stage 4 ad agosto, sono ora abilitati per impostazione predefinita in @babel/parser e @babel/preset-env.
Se stavi utilizzando il plugin del parser classStaticBlock o @babel/plugin-syntax-class-static-block, puoi rimuoverli in sicurezza dalla tua configurazione.
Se utilizzi già @babel/preset-env, puoi ora rimuovere @babel/plugin-proposal-class-static-block dalla tua configurazione.
Funzionalità di TypeScript 4.5 (#13802, #13838)
TypeScript 4.5 introduce una nuova sintassi per contrassegnare le importazioni come solo tipo: invece di contrassegnare l'intera istruzione di import, puoi contrassegnare un singolo specificatore:
// TypeScript 4.4
import type { Foo } from "my-module";
import { fooInstance } from "my-module";
// TypeScript 4.5
import { type Foo, fooInstance } from "my-module";
Supporta inoltre due nuove estensioni di file: .mts e .cts, che rispecchiano .mjs e .cjs. Quando passi un file .mts o .cts a Babel con @babel/preset-typescript abilitato, utilizza l'estensione del file per rilevare il tipo di sorgente desiderato ("module" o "script").
I file .mts e .cts non possono contenere codice JSX per impostazione predefinita, ma non possono contenere annotazioni TypeScript che sarebbero ambigue con JSX (<Type> cast e <T>() => {}).
Puoi leggere l'articolo completo sul rilascio di TypeScript 4.5 sul loro blog.
Token ^ per le pipe in stile Hack (#13749)
I champion della proposta dell'operatore pipeline stanno valutando vari token topic (il riferimento al valore del passaggio precedente della pipeline).
@babel/plugin-proposal-pipeline-operator (e il plugin del parser "pipelineOperator") supportano ora tre di essi: #, ^ e %.
let values = getNames()
|> ["default"].concat(^)
|> await loadValues(^);
È possibile abilitare la versione corrente della proposta dell'operatore pipeline utilizzando l'opzione proposal: "hack", e si può scegliere il token topic con topicToken: "^":
{
"plugins": [
["@babel/plugin-proposal-pipeline-operator", {
"proposal": "hack",
"topicToken": "^"
}]
]
}
Supporto per ESLint 8 in @babel/eslint-parser (#13782)
@babel/eslint-parser supporta ora ESLint 8: è possibile aggiornare la dipendenza "eslint" e funzionerà senza ulteriori interventi.
Se sei un autore di plugin ESLint, presta attenzione al cambiamento non retrocompatibile nell'AST per i campi di classe e i metodi privati: quando si utilizza ESLint 7 seguono la forma AST di Babel; quando si utilizza ESLint 8 seguono ESLint e la specifica ESTree. Questo perché ESLint ha introdotto il supporto per queste nuove funzionalità delle classi a partire da ESLint 8.