Microsoft a publié la version 2.0 de TypeScript, un surensemble de JavaScript. Plusieurs nouveautés importantes sont au programme, notamment les types « non-nullable », l’analyse du flux de contrôle ou encore la déclaration simplifiée des modules.
TypeScript est un langage conçu pour gérer de gros projets. Créé par Microsoft et open source (environ 150 contributeurs), il rencontre un certain succès, la récente arrivée d’Angular 2 – dont il accompagne presque la sortie – ne pouvant que le renforcer puisqu’il en devient le langage recommandé. Il s’agit d’un surensemble de JavaScript, dont il reprend l’ensemble des capacités et avec lequel il est totalement compatible.
Pour bien comprendre l’intérêt de TypeScript, il suffit de rappeler qu’il est transpilé de manière statique. Dans un tel cas, c’est le compilateur qui s’occupe de vérifier les erreurs lorsqu’il passe le code à la moulinette. Une différence de taille avec le JavaScript classique où les erreurs ne sont vérifiées qu’à l’exécution du code. Un gain que l'on retrouve avec d'autres langages tels que C++, C# ou Java.
Interdire les valeurs null et undefined
La principale nouveauté de TypeScript 2.0 est un contrôle plus important des valeurs null
pour les développeurs. Le type « non-nullable
» permet donc à ces derniers de déclarer des variables qui ne pourront jamais renvoyer une valeur null
ou undefined
.
Cette déclaration reste à l’appréciation du développeur. En ajoutant le flag « --strictNullChecks
» à son projet, il interdit explicitement à toutes les déclarations de variables qui suivent de renvoyer autre chose que leur type, string
ou number
par exemple. Mais si une variable doit justement pouvoir retourner des valeurs null
ou undefined
? De nouveaux types font justement leur apparition, avec les mêmes noms. Notez par ailleurs qu’un opérateur « ! » permet de supprimer ces types de toute expression.
Ces nouveautés à elles seules peuvent permettre une chute importante du nombre d’erreurs dans le code. D’autant que si chaque variable est soigneusement déclarée, le compilateur peut en conséquence détecter d’autres types d’erreurs, notamment les variables qui ne sont jamais initialisées.
Flux de contrôle et déclaration simplifiée des modules
Signalons deux autres apports important. D’une part, la possibilité de déclarer des modules de manière simplifiée. Plus besoin de préciser certaines informations, « declare module "foo";
» étant par exemple suffisant. D’autre part, la CFA (control flow analysis) qui permet de suivre à la trace l’évolution des types dans un programme.
Attention, son utilisation dans Visual Studio 2015 ou Visual Studio Code réclame la dernière mise à jour disponible de chaque environnement de développement.