TypeScript is een uitbreiding van JavaScript die statische (strikte) typechecking implementeert. Dit betekent dat typecontrole plaatsvindt tijdens de compilatie, en niet tijdens runtime, zoals in JavaScript.
Belangrijkste verschillen:
Voordelen in grote projecten:
Voorbeeld:
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
Vraag: Is het mogelijk om een variabele van het type any te declareren in een TypeScript-project, en verliest het project zijn voordelen van strikte typechecking?
Antwoord:
Ja, TypeScript staat het gebruik van het type any toe, wat gelijkstaat aan het ontbreken van typechecking voor deze variabele. Als je vaak any gebruikt, ondermijnt dit het belangrijkste voordeel van TypeScript - strikte typechecking en loop je het risico op typische runtime-fouten, net zoals in JavaScript.
Voorbeeld:
let data: any = 'test'; data = 42; // Er komt geen fout, maar het kan problemen veroorzaken
Verhaal
Een ontwikkelaar gebruikte vaak het type
anyvoor complexe objecten om "sneller verder te gaan". Uiteindelijk ontving hij ooit een object met ontbrekende velden, en de applicatie viel plotseling uit: de fout ging naar productie omdat typechecking ontbrak.
Verhaal
In een groot project werden berichten uitgewisseld tussen twee verschillende microservices. Een van de services wijzigde de structuur van het object, maar TypeScript waarschuwde daar niet voor, omdat het type expliciet als
anywas opgegeven. De bug werd pas een maand later ontdekt vanwege gebruikersklachten.
Verhaal
Een jonge ontwikkelaar beschreef het type van de retourwaarde van een publieke functie niet, vertrouwend op automatische type-inferentie. Na refactoren werkten de typeverwachtingen aan de andere kant niet meer, wat zorgde voor een keten van bugs door het hele project.