TypeScript est un langage de programmation libre et open source développé par Microsoft qui a pour but d'améliorer et de sécuriser la production de code JavaScript. Il s'agit d'un surensemble syntaxique strict de JavaScript (c'est-à-dire que tout code JavaScript correct peut être utilisé avec TypeScript). Le code TypeScript est transcompilé en JavaScript, et peut ainsi être interprété par n'importe quel navigateur web ou moteur JavaScript. TypeScript a été co-créé par Anders Hejlsberg, principal inventeur de C#.TypeScript a été rendu public le 1er octobre 2012 (à la version 0.8), après deux ans de développement interne chez Microsoft.
10 ans plus tard, Daniel Rosenwasser, Senior Program Manager, TypeScript, a décidé de faire le point sur les doutes des premiers jours, le parcours du langage tout en indiquant les espoirs de Microsoft à l'endroit de TypeScript.
Les premiers jours
Lorsque TypeScript a fait ses débuts, il y avait beaucoup de scepticisme - et c'est compréhensible. Pour certains utilisateurs de JavaScript, une équipe essayant d'apporter des types statiques à JavaScript aurait pu ressembler à un complot diabolique ou à une blague.
Mais les fonctionnalités avaient du mérite, non? Vérifier le type, détecter les bogues avant même d'enregistrer votre fichier et obtenir des fonctionnalités d'éditeur riches comme la complétion de code, la navigation et les refactorisations*? Nous savions que les équipes à l'intérieur et à l'extérieur de notre entreprise rencontraient d'énormes défis avec des bases de code JavaScript complexes, et nous savions que JavaScript allait être utilisé partout. Alors, qui ne voudrait pas d'outils puissants pour l'aider à l'écrire ? Pour l'équipe, il y avait une vision de ce que TypeScript pourrait être, et en fait, si vous repensez à notre premier article d'annonce, la proposition de valeur était en grande partie la même qu'aujourd'hui !
Heureusement, cette vision a trouvé un écho chez d'autres. Dès le début, nous avons construit une communauté petite, mais travailleuse et enthousiaste, désireuse d'expérimenter et de vivre l'expérience alors que nous étions encore en train d'itérer, d'apprendre et de construire quelque chose qui n'avait même pas encore atteint la version 1.0. Nous avons vu de nouveaux efforts passionnants comme le projet DefinitelyTyped, de nouveaux membres de la communauté aidant sur StackOverflow et notre outil de suivi des problèmes, des auteurs écrivant des livres et des didacticiels pour le langage, et de nouvelles bibliothèques pariant sur TypeScript. Ces développeurs patients, travailleurs et énergiques ont jeté les bases de la croissance de la communauté TypeScript.
Pourtant, la plupart des développeurs JavaScript n'étaient pas sûrs de TypeScript. Alors, comment cette équipe allait-elle convaincre les développeurs JavaScript de la valeur des types statiques dans un langage typé dynamiquement*? "Types versus pas de types" a été un sujet… controversé, et cela remonte à au moins un demi-siècle dans le monde de la programmation.
Mais nous voulions vraiment créer des outils JavaScript étonnants grâce à la puissance des types.
Est-ce que cela pourrait être fait ?
Résister à l'épreuve du temps
La vérité est que cela a nécessité une approche de développement complètement différente de celle à laquelle nous étions habitués, suivie de persévérance, de sensibilisation et d'empathie. TypeScript devait être libre et open source, et fait d'une manière vraiment ouverte. Il devait également interagir de manière transparente avec JavaScript existant, co-évoluer avec JavaScript et ressembler à JavaScript. TypeScript n'a jamais cherché à créer un langage séparé, distinct et normatif. Au lieu de cela, TypeScript devait être descriptif - innover dans le système de type autour des conventions et des modèles trouvés "dans la nature" de l'écosystème JavaScript. Cela nous a permis de rencontrer les gens là où ils se trouvaient, et cette philosophie correspondait vraiment bien aux objectifs de conception du projet.
Il est en fait surprenant de constater à quel point les objectifs de conception de TypeScript ont résisté.
Par exemple, certains objectifs de conception comme
- « n'imposer aucune surcharge d'exécution sur les programmes émis » ;
- « s'aligner sur les propositions ECMAScript actuelles et futures » ;
- « préserver le comportement d'exécution de tout le code JavaScript » ;
- « éviter d'ajouter une syntaxe au niveau de l'expression » ;
- « utiliser un système de type structurel cohérent et entièrement effaçable »
indiquent vraiment à TypeScript d'être simplement un vérificateur de type pour JavaScript, en ajoutant uniquement la syntaxe nécessaire à la vérification de type.
Nous nous sommes donc concentrés principalement sur le système de type et avons évité d'ajouter de nouvelles syntaxes et comportements d'exécution. Cela peut sembler évident 10 ans plus tard, mais les langages de programmation essaient souvent de se différencier en fonction de l'apparence de leur code...
La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer à vous proposer des publications.