TypeScript, du JavaScript en “plus propre”

De Clémence Boulay dans Technique

29 oct 2017

Qu’est ce que TypeScript ?

JavaScript est un langage largement utilisé, mais parfois mal-aimé des développeurs, à cause de son manque de rigueur. TypeScript est une surcharge de JavaScript qui apporte à ce langage certains des principes fondamentaux qui peuvent lui manquer, ainsi qu’une bonne dose de « sucre syntaxique ». Ce dernier est un langage compilé, c’est-à-dire qu’il faut passer par une phase de build pour transformer le code TypeScript en JavaScript.

Les points forts de TypeScript

Un choix peu risqué

TypeScript est le bébé de Microsoft, et il est l’un de ses projets prioritaires confié à des experts à l’origine de projets majeurs. D’autres poids lourds de l’informatique font également confiance à TypeScript, comme Google qui a notamment réécrit Angular en TypeScript.

TypeScript n’est pas une rupture avec JavaScript comme peuvent l’être certains de ses concurrents. Etant une surcharge de JavaScript, tout code JavaScript est syntaxiquement correct en TypeScript (attention cela ne veut pas dire qu’il compilera forcément…). En migrant vers TypeScript on ne repart donc pas de zéro, on peut conserver son existant.

D’autre part le code JavaScript généré par son compilateur est très propre. Il est donc assez facile d’abandonner TypeScript si on le souhaite, en reprenant comme base le code JavaScript compilé.

Le typage

L’un des gros avantages de TypeScript par rapport à JavaScript, c’est évidemment le typage. En plus de la difficulté de compréhension d’un langage non typé (surtout lorsque que le nommage n’est pas optimum), le code produit peut-être difficilement débuggable (variables qui changent de type), et son manque de rigueur peut provoquer des erreurs difficilement décelables.

La phase de compilation du TypeScript permet de détecter ces potentielles erreurs de codage avant qu’elles ne se transforment en bug. Rien de vaut un petit exemple :

1
2
3
4
5
6
7
8
// JavaScript
function isOK(myBoolean) {
if (myBoolean) {
return 'OK';
}
return 'KO';
}
let ok = isOK('false'); // "OK"

1
2
3
4
5
6
7
8
// VS TypeScript
function isOK(myBoolean: boolean) : string {
if (myBoolean) {
return 'OK';
}
return 'KO';
}
let ok = isOK('false'); // génére une erreur de type !!!

En JavaScript, il est totalement autorisé d’appeler la méthode isOk avec un paramètre non-booléen. Mais cela provoquera potentiellement des erreurs à l’exécution. Ces bugs, souvent difficiles à déceler, peuvent être évités au moment de la compilation grâce à TypeScript.

Autres fonctionnalités appréciables

En plus du typage statique, TypeScript ajoute également de nombreuses autres fonctionnalités très pratiques à JavaScript, telles que :

Si vous souhaitez tester en live les nombreuses possibilités de TypeScript, c’est possible ici.
Toutes ces fonctionnalités apportent de la rigueur au JavaScript qui est à la base très permissif. Cela incite ainsi à produire un code plus structuré, plus propre, et permet de simplifier le travail des équipes et de réduire le nombre de bugs !

La définition par API

Lorsque l’on utilise des librairie JavaScript externes, il n’est pas toujours facile de savoir comment les utiliser (que faut-il passer comme paramètres à la fonction, quelle va être sa valeur de retour, … ?). L’un des avantages très pratiques de TypeScript, c’est qu’il introduit la notion d’API. Comme pour les librairies Java et compagnie, les librairies externes vont ainsi être documentées et l’utilisateur aura accès au détail via l’auto-implémentation.

La définition des APIs dans TypeScript va bien plus loin que tout ce que l’on pouvait faire jusqu’ici avec JavaScript et jsdocs, et cela permet de faciliter l’utilisation des librairies externes. Si vous avez décidé de commencer avec un nouveau framework, la puissance de l’API de TypeScript vous aidera à le prendre en main beaucoup plus facilement.

Pour de gros projets ou projets multi-développeurs, cela permet également de pouvoir travailler facilement ensemble en mode client / fournisseur avec un échange de données simplifié.

Les fausses idées reçues

« On veut de l’objet et du typage, il faut utiliser TypeScript » !

L’une des principales raisons pour lesquelles certains développeurs veulent migrer de JavaScript à TypeScript est l’apport des fonctionnalités venues d’ES6 (classes, modules, …). Or ce n’est pas une raison suffisante, car d’autres outils beaucoup plus légers et moins impactant comme Babel permettent d’utiliser les dernières fonctionnalités d’ES6.

« C’est plus simple que du JavaScript » !

Coder en TypeScript, c’est tout de même écrire du JavaScript ! Et même si cela apporte une rigueur, les concepts de base de JavaScript parfois critiqués ne sont pas remis en cause (model évènementiel, scope, …).

« Plus d’erreurs de typage => plus de bug » !

TypeScript n’est malheureusement pas magique, et évidemment l’assertion précédente n’est pas vraie. Même si le typage peut permettre de déceler des potentiels problèmes et de faciliter le débogage, il ne faudra pas pour autant abandonner les phases indispensables de tests utilitaires et fonctionnelles.

Conclusion

Il est très courant que TypeScript soit choisi pour ses fonctionnalités de typage ou de concept objet. Il faut cependant savoir que ces principes ont été introduits dans ECMAScript 6, et que par conséquent TypeScript n’est pas la seule option pour y avoir accès. D’autres solutions plus « light » existent sur le marché, comme Babel, Dart, PureScript, Elm, Facebook’s Flow ou encore Google’s Closure…

Alors, pourquoi choisir TypeScript ?

Chacune des solutions citées à ses pros et ses détracteurs. TypeScript semble être un bon choix pour beaucoup de projets car il possède la majorité des concepts indispensables des langages objets typés, et vous permet de les ajouter à votre environnement habituel. Pas de révolution, il vous permet de conserver les mêmes librairies, les mêmes outils de développement. TypeScript apporte donc beaucoup sans vous retirer votre confort habituel ! TypeScript est plus puissant que ses concurrents. Ce n’est pas seulement un outil de compilation, c’est un langage à part entière. Il va plus loin dans les fonctionnalités, et simplifie le refactoring et le travail d’équipe. Il est par ailleurs un langage promis à un bel avenir sur lequel des géants du web ont misé.

Alors, on migre ?

Commentaire

sept × = 35

iMDEO recrute !

REJOIGNEZ-NOUS

A la recherche de nouveaux talents (développeurs web et mobile, chefs de projet,...)

Voir les annonces