Version 7.16.0 : ESLint 8 et TypeScript 4.5
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 →
Nous venons de publier Babel 7.16.0 !
Cette version active par défaut les blocs d'initialisation statique de classe. Elle inclut le support d'une nouvelle variante de la proposition d'opérateur pipeline, ainsi que la compatibilité avec TypeScript 4.5.
De plus, @babel/eslint-parser prend désormais en charge ESLint 8.
Vous pouvez consulter l'intégralité du journal des modifications sur GitHub.
Si vous ou votre entreprise souhaitez soutenir Babel et l'évolution de JavaScript sans savoir comment contribuer, vous pouvez nous faire un don via notre Open Collective ou, mieux encore, collaborer directement avec nous à l'implémentation de nouvelles propositions ECMAScript ! En tant que projet géré par des bénévoles, nous dépendons du soutien communautaire pour financer nos efforts visant à accompagner la diversité des utilisateurs JavaScript. Contactez-nous à team@babeljs.io pour en discuter !
Principales fonctionnalités
Blocs statiques de classe activés par défaut (#13713)
class MyClass {
static {
doSomeInitialization(MyClass);
console.log("MyClass initialized!");
}
}
Les blocs statiques, ayant atteint le stade 4 en août, sont désormais activés par défaut dans @babel/parser et @babel/preset-env.
Si vous utilisiez le plugin de parseur classStaticBlock ou @babel/plugin-syntax-class-static-block, vous pouvez les retirer en toute sécurité de votre configuration.
Si vous utilisez déjà @babel/preset-env, vous pouvez désormais supprimer @babel/plugin-proposal-class-static-block de votre configuration.
Fonctionnalités TypeScript 4.5 (#13802, #13838)
TypeScript 4.5 introduit une nouvelle syntaxe pour marquer les imports comme étant uniquement de type : plutôt que de marquer l'ensemble de l'instruction d'import, vous pouvez marquer un spécificateur individuel :
// TypeScript 4.4
import type { Foo } from "my-module";
import { fooInstance } from "my-module";
// TypeScript 4.5
import { type Foo, fooInstance } from "my-module";
Il prend également en charge deux nouvelles extensions de fichier : .mts et .cts, correspondant respectivement à .mjs et .cjs. Lors du traitement d'un fichier .mts ou .cts par Babel avec @babel/preset-typescript activé, l'extension détermine automatiquement le type de source ("module" ou "script").
Les fichiers .mts et .cts ne peuvent par défaut contenir de code JSX, ni d'annotations TypeScript ambiguës avec JSX (<Type> cast et <T>() => {}).
Vous pouvez consulter l'article complet sur TypeScript 4.5 sur leur blog.
Jeton thématique ^ pour les pipes de style Hack (#13749)
Les responsables de la proposition d'opérateur pipeline étudient différents jetons thématiques (référence à la valeur de l'étape précédente du pipeline).
@babel/plugin-proposal-pipeline-operator (et le plugin de parseur "pipelineOperator") prennent désormais en charge trois d'entre eux : #, ^ et %.
let values = getNames()
|> ["default"].concat(^)
|> await loadValues(^);
Vous pouvez activer la version actuelle de la proposition d'opérateur pipeline en utilisant l'option proposal: "hack", et choisir le jeton de sujet avec topicToken: "^" :
{
"plugins": [
["@babel/plugin-proposal-pipeline-operator", {
"proposal": "hack",
"topicToken": "^"
}]
]
}
Prise en charge d'ESLint 8 dans @babel/eslint-parser (#13782)
@babel/eslint-parser prend désormais en charge ESLint 8 : vous pouvez mettre à jour votre dépendance "eslint" et cela fonctionnera immédiatement.
Si vous développez des plugins ESLint, notez le changement majeur dans l'AST pour les champs de classe et méthodes privées : avec ESLint 7 ils suivent le format d'AST Babel ; avec ESLint 8 ils adoptent le format ESLint conforme à la spécification ESTree. Ce changement vient du support natif de ces fonctionnalités dans ESLint 8.