TypeScript : JavaScript avec un gilet de sauvetage
Ou : Pourquoi ajouter des contraintes à un langage le rend paradoxalement plus libre
JavaScript est un langage à typage dynamique. let x = 5 suivi de x = "hello" est parfaitement légal. La variable change de type sans prévenir. C’est flexible. C’est aussi la source d’une catégorie entière de bugs qui n’explosent qu’en production.
TypeScript est la réponse de Microsoft à ce problème. Sorti en 2012, c’est un surensemble de JavaScript — tout code JavaScript valide est du TypeScript valide, mais TypeScript ajoute un système de typage statique. Vous déclarez les types, et le compilateur vérifie que tout est cohérent avant l’exécution. « Cannot read property of undefined » passe de « bug signalé par un client frustré » à « erreur soulignée en rouge dans l’éditeur ».
Ce que TypeScript ajoute (et ce qu’il ne change pas)
Les types en pratique
| |
L’adoption massive
TypeScript est devenu le standard de fait pour les projets JavaScript d’envergure. Angular l’impose, React et Vue 3 le supportent nativement, la majorité des bibliothèques npm incluent des déclarations de types.
Le dialogue du refactoring
DevOps Dave : J’ai renommé un champ dans l’API. Le backend compile. C’est déployé.
Security Sarah : Le frontend ?
DevOps Dave : C’est du JavaScript, pas de compilation. Ça devrait marcher.
Security Sarah : « Ça devrait. » En TypeScript, le compilateur te dirait exactement où le champ est utilisé et marquerait chaque occurrence en erreur. En JavaScript, tu le découvriras quand les utilisateurs te le diront.
Tableau récapitulatif
| Concept | En une phrase |
|---|---|
| TypeScript | Surensemble de JavaScript avec typage statique — compile vers JavaScript. |
| Typage statique | Les types sont vérifiés à la compilation, pas à l’exécution. |
| Interface | Contrat qui définit la forme d’un objet (quels champs, quels types). |
| Generics | Types paramétriques qui permettent du code réutilisable et type-safe. |
Le mot de la fin
TypeScript ne rend pas JavaScript meilleur — il rend les développeurs JavaScript plus confiants. Le langage reste le même en dessous. Ce qui change, c’est la capacité à refactorer sans peur, à comprendre le code des autres sans deviner, et à détecter les erreurs avant qu’elles ne coûtent cher.