Je pilote les devs d'un projet Angular 2 depuis le début de l'année avec une équipe de 4-5 personnes. Etant très méfiant vis à vis de l'avenir de TypeScript (par rapport à Dart, CoffeeScript et tous ses prédécesseurs enterrés), j'ai choisi de rester sur Babel avec quelques presets se rapprochant de la syntaxe TypeScript (types, annotations, décorateurs, propriétés de classes...). C'est une sorte d'intermédiaire entre Flow et TypeScript, qui me donnait une porte de sortie (au cas où) tout en pouvant utiliser la documentation TS pour Angular.
Mes collègues ont un meilleur niveau en Java qu'en JS à la base, ils ont donc bien accueilli les ressemblances entre TS et Java, ayant l'impression de se retrouver dans un environnement familier. On a mis en place une code review systématique et j'ai pu observer de près leur montée en compétences.
Après ces quelques mois, voilà le bilan: le langage est apprécié par l'équipe (le framework beaucoup moins mais c'est une autre histoire) ; le typage statique s'avère utile, davantage dans son rôle d'auto-documentation du code plutôt que de prévention de bugs. La norme ES6 est une bénédiction tant elle simplifie radicalement le code un peu partout.
Le bilan est donc globalement positif, mais il y a quand même quelque-chose qui me gène: j'ai l'impression qu'en apprenant ce TypeScript-like, mes collègues en viennent à désapprendre le JS. Ils utilisent désormais presque exclusivement des classes, quitte à en déclarer beaucoup trop qui ne servent qu'une fois alors que des objets littéraux feraient parfaitement l'affaire. On a également beaucoup d'héritage avec class extends, alors que je m'étais juré de favoriser la composition et de limiter les hiérarchies d'objets. Et j'ai beau encourager un style de programmation fonctionnelle, la codebase actuelle est très orientée OOP classique avec beaucoup d'objets mutables et un usage omniprésent de
this. Bref j'ai l'impression de bosser sur un projet Java / C#, et ça ne me plaît pas beaucoup. Vous connaissez le proverbe "Quand on a qu'un marteau, tout ressemble à un clou" ? Eh bien c'est à peu près ce qui se passe ici selon moi: toutes les nouveautés TS sont utilisées abusivement et le JS vanilla semble délaissé.
J'en conclus que TypeScript va beaucoup diviser les opinions des développeurs selon leur background. Je pense que le typage fort n'est plus le fer de lance de TypeScript, contrairement à ce que son nom pourrait laisser croire. Une majorité des devs accepte l'idée qu'un typage fort optionnel est bénéfique, mais TS est loin d'être la seule option pour ça: Flow, Elm, Kotlin, ObjectModel
(celui-là est de moi ^^). Non, s'il faut caractériser TypeScript, c'est surtout l'expérience de développement familière aux devs Java et C# qui va sans doute séduire les uns et repousser les autres.
4 |
0 |