L’introduction d’une syntaxe de type optionnelle et effaçable dans JavaScript, proposée par Microsoft, pourrait rendre le langage TypeScript, basé sur JavaScript, plus rapide et plus facile à utiliser. La possibilité d’ajouter des annotations de type au code JavaScript permettrait de faire vérifier les annotations par des vérificateurs de type externes. Au moment de l'exécution, le moteur JavaScript traiterait les types comme des commentaires. Il servirait alors à formuler un ensemble de syntaxe pour les types que les moteurs ignoreraient, mais que des outils comme TypeScript, Flow et d'autres pourraient utiliser.

Cette proposition ajouterait des annotations optionnelles à ECMAScript, le standard de spécifications qui régit JavaScript. Si elle est acceptée, les développeurs pourront exécuter des programmes dans TypeScript, Flow et d'autres supersets de typage statique de JavaScript sans avoir à faire de la compilation de bas niveau ou transpilation, à condition de se maintenir dans un certain sous-ensemble raisonnablement large du langage. « La prochaine syntaxe ne changerait pas la façon dont le code environnant s'exécute et agirait effectivement comme des commentaires », a déclaré Microsoft dans un avis publié le 9 mars.

Plus pratique et des gains de productivité

Pour justifier leur motivation, les auteurs de la proposition, dont Gil Tayar, Daniel Rosenwasser de Microsoft, Romulo Cintra d'Igalia et Rob Palmer de Bloomberg, ont déclaré qu'au cours de la dernière décennie, la vérification statique des types avait fait ses preuves. Des investissements importants dans JavaScript, comme TypeScript de Microsoft, Closure Compiler de Google et Flow de Facebook, ont fourni une syntaxe pratique pour la déclaration et l'utilisation des types dans JavaScript et ont réalisé des gains de productivité que l'on observe dans d'autres langages à typage statique. La plupart du temps, leur syntaxe n'a pas d'impact sur la sémantique d'exécution. En pratique, la plupart du travail de conversion de ces variantes en JavaScript ordinaire revient à effacer les types. En outre, la fonctionnalité de typage statique a été très demandée par les programmeurs JavaScript.

L'essor de la syntaxe de type dans JavaScript a coïncidé avec l'essor de la compilation de bas niveau, ou transpilation. Mais la syntaxe de type n’est pas prise en charge de manière native par JavaScript, puisqu’il faut un outil pour supprimer les types avant d'exécuter le code. Pour des systèmes comme TypeScript, il était logique d'intégrer avec la transpilation de syntaxe une étape d'effacement des types. Certains bundlers ont fait les deux. Au fil du temps, la compilation de bas niveau devrait perdre de l’intérêt. Finalement, la seule chose que les utilisateurs de TypeScript devront faire entre l'écriture et l'exécution du code sera d'effacer les annotations de type. La proposition évitera une étape de construction. Les utilisateurs exécuteront simplement le code qu'ils ont écrit. Microsoft ne demande pas d'intégrer la vérification de type de TypeScript dans chaque navigateur et chaque moteur d'exécution JavaScript, ni d'intégrer un nouveau vérificateur de type dans le navigateur, car l’éditeur pense que cela entraînerait des problèmes de performance et de compatibilité au moment de l'exécution pour les utilisateurs de JavaScript et de TypeScript et risquerait également de freiner l'innovation. Microsoft préfère proposer une syntaxe JavaScript compatible avec TypeScript utilisable par n'importe quel vérificateur de type, mais ignorée par les moteurs JavaScript.