TypeScript 5.3

Par:
fredericmazue

mar, 21/11/2023 - 13:53

Microsoft a annoncé la disponibilité de TypeScript 5.3. La grosse nouveauté apportée par TypeScript 5.3 est le support des attributs d'importation, tels que définis dans cette proposition. Un cas d'utilisation des attributs d'importation consiste à fournir des informations sur le format attendu d'un module au runtime. Microsoft donne cet exemple :

// We only want this to be interpreted as JSON,
// not a runnable/malicious JavaScript file with a `.json` extension.
import obj from "./something.json" with { type: "json" };

Le contenu de ces attributs n'est pas vérifié par TypeScript car ils sont spécifiques à l'hôte et sont simplement laissés en l'état afin que les navigateurs et les environnements d'exécution puissent les gérer.

Les appels dynamiques à import() peuvent également utiliser des attributs d'importation via un deuxième argument. Microsoft donne cet exemple :

const obj = await import("./something.json", {
    with: { type: "json" }
});

Le type attendu de ce second argument est défini par un type appelé ImportCallOptions, qui par défaut attend simplement une propriété appelée with.

En résumé les nouveautés de TyoeScript 5.3 sont les suivantes :

  • Attributs d'importation
  • Une prise en charge stable de resolution-mode dans les types d'importation
  • Narrowing dans une construction switch (true)
  • Narrowing sur les comparaisons aux booléens
  • Narrowing de instanceof via Symbol.hasInstance
  • Vérification des accès aux propriétés super. sur les champs d'instance
  • Indices d'incrustation interactifs pour les types
  • Optimisations en ignorant l'analyse JSDoc
  • Optimisations en comparant les intersections non normalisées
  • Consolidation entre tsserverlibrary.js et typescript.js