Beaucoup attendaient Anders Hejlsberg au tournant. Il faut dire que l’homme attire l’attention, tant il cumule les succès professionnels. Après avoir participé à l’élaboration du Turbo Pascal, l’ingénieur danois est devenu chef de projet sur Delphi puis a créé le framework .NET et C# au début des années 2000. Il est en charge depuis de faire évoluer ce langage fortement typé. Autant dire qu’on ne l’attendait pas sur du JavaScript, à tort.
TypeScript, le nouveau bébé de Hejlsbernt chez Microsoft, est un sur-ensemble de JavaScript ajoutant au langage un certain nombre d’extensions conceptuelles dont notamment le typage statique, et une orientation objet centrée sur les classes et non plus les prototypes.
Pour passer de TypeScript à JavaScript, le développeur utilisera un compilateur, mais TypeScript ne doit pas être confondu avec d’autres langages générant du JavaScript : il n’est ni une réinterprétation de JavaScript dans une syntaxe différente, comme CoffeeScript, ni destiné à être exécuté dans son propre runtime comme Dart
Le langage semble pensé pour l’avenir. La syntaxe de déclaration des classes, par exemple, est issue de l’ECMAScript ES6, tant et si bien que lorsque cette version sera supportée par les navigateurs, TypeScript n’aura tout simplement plus qu’à arrêter de compiler ces classes qui seront interprétées nativement.
Niveau support, Microsoft proprose une extension Visual Studio pour sa communauté de développeurs et de l’autre, un package NodeJS. Et niveau ouverture, on signalera que le compilateur proposé (développé lui-même en TypeScript) est sous licence Apache 2.0 et que le langage est sous licence Open Web Foundation (OWFa 1.0).
TypeScript n’est pas le seul dans la course à la succession de JavaScript mais il se démarque en se positionnant non pas comme un remplaçant, mais plutôt comme une extension facilitant l’usage de JavaScript pour du développement objet. En somme, un cri d’amour de Microsoft envers une technologie en pleine émancipation sur le Web, côté client comme côté serveur.
De plus :
- Respectant la syntaxe JavaScript, il peut être utilisé dès maintenant sur des projets en Production, sans coût de migration
- Quand c’est possible, TypeScript infère le type. Cela veut dire que même si vous lui passez vos JavaScripts actuels, il les validera en vérifiant que les types sont respectés
- Il n’exclut pas de continuer à utiliser les outils JavaScript déjà présent dans votre intégration continue : compilateurs, réducteurs, concaténeurs s’appliqueront sur le JavaScript en sortie de TypeScript.
- En ajoutant un compilateur, il ajoute une sécurité supplémentaire contre les erreurs de développement
- Son compilateur est lui-même en JavaScript, ouvrant la porte à des compilations à la volée
- Il est livré avec des add-ins pour la coloration syntaxique sous Sublime Text 2, Vim et Emacs
A vous d’essayer désormais, et de vous faire une idée…
masseuro
3 octobre 2012
En lisant ta réaction j’ai l’impression que TypeScript n’a de nouveauté que le compilateur Ecmascript ES6 -> “Javascript actuel”.
C’est bien ça ou il y a d’autre truc en plus ?
Est-ce que réellement la norme Ecmascript ES6 est respectée ?
J’ai pas encore eu le temps d’y faire un tour, ça à l’air d’être trop beau pour être vrai mais si c’est bien ça c’est excellent comme nouvelle !
Boris Schapira
3 octobre 2012
Pour être parfaitement honnête, je n’ai pas toute la spécification de l’ES6 en tête, mais ES6 apporte-t-il les annotations de type statique ?
Si oui, alors on a bien une implémentation ES6 en avance de phase (et à mon avis, il faudra bien attendre encore un an ou deux avant de voir le support ES6, mais j’espère me tromper).
Sinon, TypeScript apporte au moins ça en plus, et c’est déjà énorme.
Tristan Bernard
3 octobre 2012
> Quand c’est possible, TypeScript infère le type
Non, c’est le moteur Javascript de l’environnement d’execution qui se charge de cette tâche.
Boris Schapira
3 octobre 2012
Le compilateur TypeScrip étant lui-même en JavaScript, oui, tout-à-fait, c’est in fine du JavaScript qui réalise l’ensemble de ces tâches, et donc le moteur d’exécution sous-jacent.
En revanche je n’ai pas creusé les différences entre les deux compilateurs proposés (NodeJS et Visual Studio). Plus précisément, je ne sais pas quel moteur est utilisé par VS. Un point à creuser pour plus tard…