TypeScript est une surcouche de JavaScript qui implémente un typage statique (strict). Cela signifie que la vérification des types se produit au moment de la compilation, et non à l'exécution, comme en JavaScript.
Principales différences:
Avantages dans les grands projets:
Exemple:
type User = { name: string; age: number; } function greet(user: User): string { return 'Hello, ' + user.name; } const u: User = { name: 'Ivan', age: 30 }; greet(u); // Ok
Question : Peut-on déclarer une variable de type any dans un projet TypeScript, et le projet perdra-t-il ses avantages de typage strict ?
Réponse :
Oui, TypeScript permet d'utiliser le type any, ce qui équivaut à l'absence de typage pour cette variable. Si any est utilisé fréquemment, cela annule le principal avantage de TypeScript — la typologie stricte, et vous courez le risque de rencontrer des erreurs d'exécution typiques, comme en JavaScript.
Exemple:
let data: any = 'test'; data = 42; // Aucune erreur ne surviendra, mais cela peut causer des problèmes
Histoire
Un développeur a souvent utilisé le type
anypour des objets complexes, afin de "progresser plus rapidement". En conséquence, un jour un objet est arrivé avec des champs manquants, et l'application a planté pour des raisons apparemment inexplicables : l'erreur a été mise en production à cause de l'absence de vérification de types.
Histoire
Dans un grand projet, des messages étaient échangés entre deux microservices différents. Un des services a modifié la structure de l'objet, mais TypeScript n'a pas prévenu cela car le type avait été explicitement défini comme
any. Le bug a été découvert un mois plus tard suite aux plaintes des utilisateurs.
Histoire
Un jeune développeur n'a pas décrit le type de retour d'une fonction publique, en s'appuyant sur l'inférence automatique de type. Après un refactoring, les attentes de type de l'autre côté ont cessé de fonctionner, entraînant une chaîne de bugs dans tout le projet.