AccueilActualités informatiqueLangage de programmation : Microsoft veut apporter des indices de typhus en...

Langage de programmation : Microsoft veut apporter des indices de typhus en JavaScript

Microsoft a publié une proposition officielle pour une syntaxe de type en JavaScript. La nouvelle syntaxe doit introduire un typage pour les variables et les paramètres dans le langage de programmation fondamentalement non typé. Elle est plus rectiligne et plus légère que la syntaxe basée uniquement sur les commentaires que certains développeurs utilisent actuellement en JavaScript. Néanmoins, elle doit être entièrement optionnelle et surtout axée sur l’outillage, et non sur les moteurs.

Sommaire

Avec TypeScript, dont la version 4.6 vient de sortir, Microsoft propose depuis dix ans un langage de programmation comme surensemble de JavaScript, qui mise notamment sur le typage, comme son nom le suggère. Certains considèrent l’absence de typage en JavaScript comme une bénédiction en raison de sa flexibilité et de sa simplicité, tandis que d’autres y voient une malédiction en raison du potentiel d’erreur accru. Dans l’enquête annuelle « State of JavaScript », le typage statique est arrivé en tête de la liste des fonctionnalités souhaitées au cours des deux dernières années.

L’enquête sur le développement JavaScript révèle un large désir de typage statique.

(Image : State of JS 2021)

En JavaScript, les commentaires sur JSDoc, qui proposent des spécifications de type optionnelles via @type pour les variables et @param et @returns pour les appels de fonction :

/**
 * @type {string}
 */
var s;

/**
 * @param {string} s1
 * @param {number} n1
 * @returns {string} 
 */
function doSomething(s1, n1) {
  ...
}

Les commentaires n’ont aucune influence sur le flux réel du programme et les moteurs JavaScript ignorent les affectations de type différentes de l’annotation. Cependant, des outils comme le compilateur TypeScript les évaluent pour effectuer une vérification de type.

Microsoft propose maintenant une approche similaire avec une syntaxe plus légère. Selon la première ébauche, le code ci-dessus se présenterait comme suit :

let s: string;

function doSomething(s1: string, n1: number): string{
  ...
}

La proposition n’a pas encore été officiellement soumise au comité de standardisation ECMAScript TC39. Microsoft l’a publiée sur GitHub en tant que Stage 0 Proposal et souhaite la soumettre prochainement au comité.

Comme pour les commentaires JSDoc, la syntaxe de type doit être purement optionnelle. Les moteurs JavaScript et donc les navigateurs doivent l’ignorer. Des outils comme TypeScript ou Flow peuvent toutefois les utiliser pour avertir des erreurs de typage. Les environnements de développement et les éditeurs de code doivent également utiliser la syntaxe pour signaler directement les paramètres ou les variables mal typés.

La proposition vise entre autres les développeurs qui utilisent TypeScript plutôt que JavaScript en premier lieu pour le typage. Ils s’épargnent ainsi l’étape de développement supplémentaire consistant à traduire le code TypeScript en code JavaScript.

La syntaxe de type doit permettre de supprimer l’étape intermédiaire de traduction de TypeScript en JavaScript.

(Image : Microsoft)

En plus des annotations de type, Microsoft propose également ? comme marquage pour les paramètres optionnels ou le contenu des classes et les assertions de type via as et ! sont proposés. À moyen terme, les modificateurs d’accès public, private et protected imaginables.

Grâce à la syntaxe largement reprise de TypeScript, l’utilisation des indices de Typhin devrait être aussi attrayante pour les développeurs JavaScript que pour les développeurs TypeScript.

JavaScript ne serait pas le premier langage non typé à l’origine à recevoir plus tard une syntaxe de type. Python connaît les Type Hints depuis la version 3.6. PHP a progressivement étendu son système de types, avec les premiers Type Hints dans la version 5 et des ajouts déterminants dans PHP 7.2 et PHP 7.4.

Lire aussi

De plus amples détails sont disponibles sur le blog des développeurs de Microsoft. L’article indique explicitement que la proposition n’a pas pour but d’introduire la vérification de type de TypeScript pour chaque navigateur et chaque environnement d’exécution JavaScript, car cela entraînerait inévitablement des problèmes de compatibilité et de performance. Microsoft souhaite présenter officiellement la proposition lors de la prochaine réunion du TC39 en mars. Le processus de normalisation du comité prévoit quatre étapes pour toutes les propositions.

Plus d'articles