Immergé dans Angular 2 afin de préparer la prochaine série de tutoriels qui sera consacrée à cette nouvelle version du célèbre framework développé par Google, il m'a fallu suivre le mouvement et passer à TypeScript. Ca ne me faisait pas plaisir : j'avais l'impression de repasser du fonctionnel prototypal de JavaScript à l'orienté objet (je n'ai rien contre la POO, mais il y a C#, Java, PHP etc pour ça). Mais bon, comme TypeScript a été choisi par les développeurs d'Angular 2, documentation et exemples seront probablement beaucoup plus nombreux en TypeScript qu'en JavaScript, j'ai donc sauté le pas.
Est- ce que ça a été difficile ?
Non ! Pour la petite histoire, ça m'a ramené 10 ans en arrière en me rappelant ActionScript, avec cette façon d'indiquer le type d'une variable après son nom, donc si vous avez fait du Flash, vous ressentirez une bouffée de nostalgie. Mais surtout, si vous avez pratiqué un langage orienté objet, et plus particulièrement C#, vous retrouverez classes, interfaces, héritage et génériques. La compilation de TypeScript vers JavaScript vous génèrera du vanilla JavaScript qui dispensera de se soucier de la version de navigateur de vos utilisateurs dans la plupart des cas.
Aurez-vous toujours l'impression de faire du JavaScript ?
De l'ES6 en tous cas, notamment quand vous créerez classes et méthodes. Lorsque vous utiliserez TypeScript dans Angular 2 ou Ionic 2, vos décorateurs seront configurés par des objets JavaScript, vous retrouverez Promises - mais surtout, dans le cadre d'Angular 2, les Observables (via RxJS) -, les opérations sur les tableaux seront effectuées à l'aide de vos habituels slice(), splice() et autres forEach, quand vous n'importerez pas simplement lodash pour utiliser vos méthodes préférées, la logique d'export et d'import vous rappelera fortement ce que vous faites avec node.js. En fait, TypeScript ajoute des possibilités à JavaScript plutôt que d'essayer de se débarrasser de JavaScript. Enfin, l'étape de compilation vers JavaScript n'est pas rebutante grâce à gulp ou webpack.
Passer de JavaScript à TypeScript est une habitude qui sera prise en quelques jours. D'autant que vous n'êtes pas obliger de tout adopter tout le temps (le typage par exemple est facultatif). C'est plutôt la syntaxe d'Angular 2, avec ses crochets, parenthèses et étoiles au milieu du HTML d'un template qui vous fera un choc dans un premier temps. Mais c'est une autre histoire, qui finit bien également.
Pour vous faire une idée concrète et comparer du code TypeScript et JavaScript côte à côte, rendez-vous sur le TypeScript playground
Et bien sûr, le site officiel de TypeScript lui-même.