En renforçant JavaScript, Micrososft veut faciliter le développement d'applications plus complexes. L'éditeur a notamment enrichi le langage d'un ensemble de fonctionnalités avancées qu'on a plutôt l'habitude de trouver dans des langages de programmation plus matures, comme le C++ et Java. Rassemblées dans un kit JavaScript nommé TypeScript, les nouvelles capacités permettent d'effectuer du typage statique, d'écrire des classes et de faire de la modularisation. « Ces 5 dernières années, nos clients nous ont fait savoir, et de plus en plus, que l'écriture d'applications à l'échelle JavaScript devenait tout simplement trop difficile », a déclaré Anders Hejlsberg, architecte en chef du langage C# chez Microsoft. « TypeScript fournit une base pour la prédiction de code, de plus grandes capacités de débogage, il permet le remaniement de code et une navigation plus facile à travers la masse de code contenu dans un programme. Cela devrait contribuer à faciliter le développement de code JavaScript », a-t-il ajouté.
Deux pour développer ce kit
Selon Anders Hejlsberg, « les ingénieurs de Microsoft ont passé plus de deux ans à développer ce kit». La spécification TypeScript, ainsi qu'un compilateur Open Source sont disponibles sur le référentiel CodePlex. Microsoft a également développé un plug-in Typescript pour Visual Studio. « Typescript n'est pas un langage entièrement nouveau. C'est plutôt un sur-ensemble du langage JavaScript », a encore expliqué l'architecte. Les développeurs vont continuer à coder en JavaScript, et ils utiliseront des pièces Typescript en fonction de leurs besoins. Ensuite, ils exécuteront le code avec le compilateur Typescript, lequel recrachera du JavaScript standard. « Tout le code JavaScript est du code Typescript, et toutes les bibliothèques JavaScript peuvent fonctionner avec Typescript », a ajouté Anders Hejlsberg. « Le compilateur Typescript génère du code JavaScript idiomatique. Ce code peut tourner sur n'importe quel navigateur ».
Typescript doit permettre à un nombre croissant de développeurs intéressés par JavaScript de créer des applications web à grande échelle, qui puissent tourner dans un navigateur plutôt que sur le bureau. « JavaScript a été conçu comme un langage de script. Il n'a pas été conçu pour structurer des bases de code moyennes ou à grande échelle comme les classes ou les modules », a encore expliqué l'architecte de Microsoft. « JavaScript est un langage entièrement dynamique qui n'offre pas de typage statique. Or, le typage statique est vraiment au coeur des environnements de développement intégrés IDE actuels ». Pour faire du typage statique, les développeurs doivent avoir la possibilité d'assigner un type spécifique à chaque variable qu'ils créent. JavaScript est lui-même un langage typé dynamiquement, dans lequel les variables n'ont pas besoin d'être déterminées à l'avance par un type spécifique, ce qui simplifie le codage pour les moins expérimentés.
Anticiper le code à écrire
Cependant, grâce au typage statique, le compilateur peut livrer des rapports plus détaillés sur les erreurs de codage, et donc mieux prédire ce dont le programme pourrait avoir besoin, car il est capable de dire quel type de données il faut assigner à une variable. Dans Visual Studio par exemple, Typescript va permettre à IntelliSense d'anticiper sur le code à écrire quand on développe en JavaScript, à l'image de ce que fait déjà IntelliSense avec le C# et d'autres langages à typage statique. StaticScript, qui sert à l'annotation de type, offre également une certaine souplesse. Ainsi, les développeurs peuvent ajouter des annotations de type seulement là où ils le souhaitent, soit à leur propre code, soit à des bibliothèques spécifiques. En plus du typage statique, Typescript permet aussi la modularité et la capacité de faire des déclarations de classes, selon les spécifications arrêtées par les développeurs de la prochaine version d'ECMAScript, le standard de référence sur lequel se base JavaScript. Les classes permettent aux développeurs de réutiliser des fonctionnalités existantes dans le programme. Quant à la modularité, elle peut les aider à organiser de grandes bases de code, et de faciliter les mises à jour de portions de code sans trop affecter les autres parties du programme.
Microsoft n'est pas le premier éditeur à chercher à renforcer JavaScript. Pour pallier aux lacunes de JavaScript en matière de développement d'applications complexes Google a élaboré un nouveau langage appelé Dart et destiné à gérer des applications Web plus complexes. Typescript pourrait avoir plusieurs avantages sur Dart. En premier lieu, il n'oblige pas les développeurs à apprendre un langage entièrement nouveau. « Au contraire, ceux-ci peuvent continuer à utiliser JavaScript et apprendre simplement les règles particulières à la mise en oeuvre de TypeScript », a expliqué Anders Hejlsberg. L'autre avantage potentiel de Typescript, c'est qu'il ne nécessite l'ajout d'aucune nouvelle technologie dans les navigateurs, étant donné que le code Typescript est compilé en JavaScript standard qui peut être ensuite exécuté par n'importe quel navigateur. « Typescript ne confère aucune baisse de performance au moment de l'exécution, car les ajouts Typescript sont « recompilés » dans le standard JavaScript, a encore déclaré l'architecte de Microsoft.
La spécification Typescript est disponible gratuitement sous licence Open Web Foundation. Microsoft cherche le soutien communautaire pour un développement ultérieur. Le compilateur est livré sous licence Apache 2.0.