Ajouter un commentaire

TypeScript 4.7 bêta

Par:
fredericmazue

mar, 12/04/2022 - 12:46

Microsoft annoncé la disponibilité de TypeScript 4.7 bêta. L'apport majeur de cette nouvelle version est la prise en charge du module ECMScript dans node.js.

Depuis quelques années, Node.js travaille pour supporter les modules ECMAScript (ESM). Cela est un sujet très difficile, car l'écosystème Node.js est construit sur un système de modules différent appelé CommonJS (CJS). L'interopérabilité entre les deux apporte de grands défis, avec de nombreuses nouvelles fonctionnalités à jongler ; cependant, la prise en charge d'ESM dans Node.js a été largement implémentée dans Node.js 12 et versions ultérieures. Depuis TypeScript 4.5, Microsoft a déployé une prise en charge nocturne uniquement pour ESM dans Node.js afin d'obtenir des commentaires des utilisateurs et de permettre aux auteurs de bibliothèques de se préparer à une prise en charge plus large.

TypeScript 4.7 ajoute cette fonctionnalité avec deux nouveaux paramètres de module : node12 et nodenext.

{
    "compilerOptions": {
        "module": "nodenext",
    }

Une autre nouvelle fonctionnalité à remarquer est le contrôle de la détection de module. Un problème avec l'introduction des modules dans JavaScript était l'ambiguïté entre le code "script" existant et le nouveau code de module. Le code JavaScript dans un module s'exécute légèrement différemment et a des règles de portée différentes, de sorte que les outils doivent prendre des décisions sur la façon dont chaque fichier s'exécute. Par exemple, Node.js nécessite que les points d'entrée du module soient écrits dans un .mjs, ou aient package.json à proximité avec le "type": "module". TypeScript traite un fichier comme un module chaque fois qu'il trouve une instruction import ou export dans un fichier, mais sinon, il supposera qu'un fichier .ts ou .js est un fichier de script agissant sur la portée globale

Cela ne correspond pas tout à fait au comportement de Node.js où le package.json peut modifier le format d'un fichier, ou le paramètre --jsxreact-jsx, là où un fichier JSX contient une importation implicite vers une factory JSX. Cela ne correspond pas non plus aux attentes modernes où la plupart des nouveaux codes TypeScript sont écrits en pensant aux modules.

C'est pourquoi TypeScript 4.7 introduit une nouvelle option appelée moduleDetection. moduleDetection peut prendre 3 valeurs : "auto"(la valeur par défaut), "legacy"(le même comportement que la version 4.6 et antérieure), et "force".

Filtered HTML

Plain text

CAPTCHA
Cette question permet de vérifier que vous n'êtes pas un robot spammeur :-)
  CCC   AA   N   N   SSS    GGG  
C A A NN N S G
C AAAA N N N SSS G GG
C A A N NN S G G
CCC A A N N SSSS GGG