Karim's Blog

Un peu de tout sur CSS, HTML, AngularJS, JavaScript, Php et le reste

TypeScript : les spécificités

Philosophie
La philosophie au cœur du TypeScript tient aux 3 points exposés sur sa page d’accueil

Commence et finit avec JavaScript

TypeScript part du JavaScript, sa syntaxe et sa sémantique, connu de millions de développeurs JavaScript. Le code JavaScript existant s’interface naturellement avec celui de TypeScript, et réciproquement moyennant quelques astuces. Cela permet l’emploi des librairies JavaScript populaires telles qu’Angular, JQuery, Knockout, React, Rx. C’est ce qui le différencie des autres transpileurs tels que CoffeeScript.

Outils robustes pour larges applications

Le typage permet aux outils de développement de proposer une complétion de code (aka intellisense) fiable, de la vérification statique des types et du refactoring de code. Les développeurs gagnent en productivité, les produits sont plus fiables.
La combinaison du typage optionnel et de l’inférence de type permet de réduire les définitions explicites du type tout en bénéficiant de ses avantages en termes de vérification statique du code.
Il est possible de typer les librairies JavaScript existantes afin de gagner en visibilité sur leur comportement une fois utilisée en TypeScript.

Etat de l’art JavaScript

TypeScript est « ECMAScript friendly ». Il tend à offrir un support aux fonctionnalités et évolutions les plus récentes de JavaScript, même à l’état de proposition, définies dans le standard ES7. On trouve ainsi de manière non exhaustive :
  • les fonctions async et les décorateurs, chers à Angular2,
  • les fonctions flèches aka expression lambda, permettant une écriture plus compacte et lisible et de fiabiliser le ‘this’,
  • la substitution de chaîne, dont la syntaxe est proche du C#6,
  • les mots clés let/const permettant d’avoir des variables de portée au niveau bloc, plus intuitive que l’habituelle portée de niveau fonction,
  • l’opérateur spread ‘…’ autorisant une syntaxe explicite pour les arguments restant d’une fonction et dont le type est vraiment Array, de même que le clonage et la concaténation de tableaux (depuis la version 1.5) et des objets littéraux (en version 2.1 d’après la roadmap).

Attention cependant ! Cela se passe à deux niveaux : de base, ils sont reconnus dans le code TypeScript. Mais à l’heure actuelle, seules certaines de ces fonctionnalités peuvent être transpilées en JavaScript compatible avec une version inférieure d’ECMAScript comme le fait Babel, lorsque l’on spécifie une target de ce type au transpiler.

Spécificités
Voici quelques-unes des spécificités de TypeScript par rapport au JavaScript :

  • Généralités : améliore et sécurise la programmation de code JS.
  • Typage statique, simple ou combinable par union
  • C#/Java friendly : enum, type générique, paramètres optionnels
  • POO : classes concrètes/abstraites, interfaces, héritage simple.
  • Encapsulation et gestion des noms grâce aux modules et namespaces.