Interactivated logo

TypeScript 5.0: Wat is er nieuw in de nieuwste versie van Microsoft?

Feb 19, 2024
Alle blogberichten

Quick answer

Refactor if the core structure still works. Rebuild if architecture, performance, and change-cost are already fighting growth. Not sure? Calculate the cost below first.

Signs your MVP is becoming a bottleneck

1

Every feature takes 3× longer

Your codebase has become too tightly coupled. Small product updates now create complexity across unrelated systems.

Medium → High
2

Developers avoid parts of the codebase

Some systems have become unstable enough that engineers no longer trust them. "Nobody wants to touch that module."

High
3

AI-generated code created inconsistent architecture

Duplicated logic, conflicting patterns, and over-engineered solutions with unnecessary dependencies throughout the codebase.

Medium → High
4

Onboarding new developers takes weeks

Business logic is scattered across the product. Different parts follow different conventions. Team velocity slows as headcount grows.

Medium
5

Small changes create unrelated bugs

A frontend adjustment should not break billing. The architecture has become too tightly coupled across the platform.

High
6

Testing is nearly impossible

Without reliable tests, deployments become stressful, refactoring becomes dangerous, and developers lose confidence.

High
7

Deployments feel risky every time

You no longer have a development-speed problem — you have a reliability problem. And it compounds aggressively as you scale.

Critical

Refactor vs. Rebuild vs. Incremental

Refactor codebase

Best forMaintainable but messy architecture
RiskLower
CostMedium
OutcomeFaster iteration

Rebuild software

Best forFundamentally broken systems
RiskHigh
CostHigh
OutcomeLong-term reset

Incremental migration

Best forScaling post-MVP startups
RiskMedium
CostMedium
OutcomeControlled modernization
TypeScript is ontwikkeld als een superset van JavaScript en bestaat om één reden: het schrijven van JavaScript-code te vereenvoudigen. Om dit doel te bereiken, heeft Microsoft sinds de release in 2012 regelmatig updates voor de taal uitgebracht, met als hoogtepunt de aankondiging van TypeScript 5.0 in maart 2023. TypeScript 5.0 maakt de taal blijkbaar "kleiner, eenvoudiger en sneller", wat bereikt wordt door de introductie van verschillende nieuwe functies. Maar cruciaal is dat TypeScript 5.0 geen revolutionaire release is. Het verandert de werking van de taal niet drastisch, wat betekent dat elk van deze functies bedoeld is om de huidige gereedschapskist van de gebruiker uit te breiden. Dit is wat er nieuw is in de nieuwste release van Microsoft. 1 – Bijgewerkte en gemoderniseerde decorators. Hoewel decorators al een tijdje beschikbaar zijn in TypeScript, maakt de 5.0-release er een volwaardige functie van. Ze worden gebruikt om een herbruikbare methode te bieden voor het aanpassen van het gedrag van klassen en hun leden.

Microsoft geeft het volgende voorbeeld van waar decorators in beeld komen:

class Person {
 name: string;
 constructor(name: string) {
 this.name = name;
 }
 greet() {
 console.log("LOG: Entering method.");
 console.log(`Hello, my name is ${this.name}.`);
 console.log("LOG: Methode verlaten.")
 }
}

Hier ziet u meerdere console.log-aanroepen die het "greet"-lid van de "Person"-klasse helpen om een gepaste begroeting uit te voeren. Als u denkt dat u dit patroon van `console.log`-opdrachten elders kunt gebruiken, kunt u nu een functie maken die u overal in uw code kunt aanroepen. Dat is een decorator. In dit geval zegt Microsoft dat de gemaakte functie er ongeveer zo uit zou kunnen zien: function loggedMethod(originalMethod: any", _context: any) { function replacementMethod(this: any, ...args: any[]) { console.log("LOG: Entering method.") const result = originalMethod.call(this, ...args); console.log("LOG: Exiting method.") return result; } return replacementMethod; }

Hier ziet u hoe een functie "loggedMethod" wordt aangemaakt. Deze functie zet de console.log-aanroepen van de originele code om in een functie die u weer in de code kunt invoegen. Wanneer u uw code uitvoert, bevat deze de naam van elke klasse of methode die u "versiert" met uw nieuwe functie.

Deze functie kan behoorlijk complex worden, vooral wanneer u typen en context in uw decorators introduceert. Het belangrijkste is dat je je decorators overal in je code kunt aanroepen, waarbij Microsoft aangeeft dat ze veel vaker gebruikt zullen worden dan dat ze geschreven zijn. Er zijn echter ook enkele beperkingen aan decorators. TypeScript 5.0 staat bijvoorbeeld nog niet toe dat je de typen die aan klassen en methodesignaturen zijn toegewezen, wijzigt of beperkt.

2 – Verbeterd gebruik van Enums

TypeScript 5.0 Wat is er nieuw in de nieuwste release van Microsoft 1

In TypeScript zijn Enums constructies waarmee je een set benoemde constanten kunt maken. Deze constanten worden vervolgens doorgegeven aan een functie, waarbij de toevoegingen van TypeScript 5.0 ze flexibeler maken dan voorheen.

Dit is het duidelijkst te zien bij het genereren van fouten.

Bijvoorbeeld, Kinsta geeft het volgende korte voorbeeld:

enum Color {
 Red,
 Green,
 Blue,
}
function getColorName(colorLevel: Kleur) {
 return colorLevel;
}
console.log(getColorName(1));

Voorheen resulteerde het doorgeven van een onjuist niveaunummer aan een functie niet in een foutmelding van TypeScript. De functie probeerde gewoon te draaien met het onjuiste nummer. Nu geeft TypeScript direct een foutmelding weer, waardoor je snel eventuele fouten of problemen in je code kunt opsporen.

Bovendien zijn Enums uitgebreid, waardoor ze allemaal "union Enums" zijn geworden. Elk berekend lid van de Enum krijgt een uniek type, waardoor je die leden elders in je code als typen kunt gebruiken.

3 – Infrastructuurwijzigingen en -optimalisaties

De meest significante verbeteringen in TypeScript 5.0 hebben wellicht betrekking op de infrastructuur die de taal ondersteunt. Zoals Microsoft beloofde, is het veel sneller, met de volgende verbeteringen die de bouwtijd verkorten:

  • Playwright – Bouwtijd is met 87% verbeterd
  • MUI – Bouwtijd is 90% sneller
  • VS Code – Bouwtijd is met 80% verbeterd
  • Outlook Web – Bouwtijd is met 82% verbeterd

Deze verbeteringen zijn vrijwel overal zichtbaar. De TypeScript-compiler is bijvoorbeeld nu 87% sneller bij het opstarten en heeft ook een 87% snellere zelfcompilatietijd. De meeste van deze optimalisaties zijn het resultaat van Microsofts overstap van namespaces naar modules binnen de taal. Dit biedt programmeurs de mogelijkheid om een modulaire – en efficiëntere – infrastructuur te creëren en tegelijkertijd modernere buildtools te integreren. Andere aanpassingen omvatten het verminderen van de hoeveelheid data die in de compiler wordt opgeslagen, wat waarschijnlijk de snellere opstart- en zelfcompilatietijden verklaart. Uniformiteit tussen objecttypen wordt verder bevorderd, zowel door een betere balans in geheugengebruik tussen objecten als door de vermindering van polymorfe bewerkingen. Met andere woorden, er zullen minder bewerkingen worden gedeclareerd zonder implementatie binnen een bovenliggende klasse, waardoor het aantal "onvolledige" bewerkingen in uw code aanzienlijk wordt verminderd.

4 – Constante typeparameters

Een van de meest voorkomende problemen die door TypeScript-gebruikers worden aangekaart, is dat het vaak te vaag was bij het afleiden van een object. TypeScript deed dit meestal om de mogelijkheid van latere mutaties te creëren, maar het resultaat was dat gebruikers minder controle hadden over wat hun code deed. Als u ervoor wilde zorgen dat een specifiek type werd gebruikt, merkte u mogelijk dat TypeScript niet aan uw gewenste inferentie voldeed. Er werd om specificiteit gevraagd, en Microsoft leverde dit via de nieuwe modifier "const". U kunt deze modifier toevoegen aan een typeparameterdeclaratie, waardoor de inferentie "const" de standaard wordt voor al het gebruik van dat type. Cruciaal is dat de modifier niet zomaar alle veranderlijke waarden die u gebruikt afwijst, wat betekent dat een beperking van het veranderlijke type nog steeds onverwachte resultaten kan opleveren.

5 – Implementatie van aanpassingsvlaggen

Nu JavaScript in staat is om "hybride" resolutieregels te modelleren, zult u wellicht merken dat sommige tools die u gebruikt verschillen in de mate waarin ze TypeScript ondersteunen. Met TypeScript 5.0 biedt Microsoft u een manier om vlaggen in te stellen waarmee een functie kan worden in- of uitgeschakeld, afhankelijk van of deze werkt met uw specifieke configuratie. -->

Hieronder volgen een paar voorbeelden:

allowImportingTsExtensions

Deze functie maakt het normaal gesproken mogelijk dat TypeScript-bestanden elkaar kunnen importeren, zolang ze maar een geschikte extensie hebben, zoals .ts of .tsx.

Het probleem is dat deze importpaden mogelijk niet oplosbaar zijn in een JavaScript-uitvoerbestand wanneer u het programma uitvoert. Met "--noEmit" en "--emitDeclarationOnly" kunt u nu bepalen wanneer de vlag "allowImportingTsExtensions" is ingeschakeld, waardoor de kans op runtime-importproblemen wordt beperkt.

customConditions

Met de opdracht "customConditions" kunt u TypeScript nu laten verwijzen naar een lijst met voorwaarden waaraan moet worden voldaan wanneer het platform een import- of exportveld van een package.json oplost. De voorwaarden die u opgeeft, worden eenvoudigweg toegevoegd aan de standaardvoorwaarden die uw resolver gebruikt, waardoor u voorwaarden kunt specificeren die niet automatisch worden gecontroleerd. Er zijn nog veel meer voorbeelden, en Microsofts Developer Blog voor TypeScript 5.0 gaat hier dieper op in. U kunt bijvoorbeeld ook verschillende nieuwe vlaggen doorgeven in de --build-modus, waaronder de volgende:

  • --sourceMap
  • --declaration
  • --declarationMap
  • --inlineSourceMap
  • --emitDeclarationOnly

Deze commandoʼs maken het gemakkelijker om onderdelen van uw build aan te passen en voorwaarden in te stellen voor builds die mogelijk verschillende productie- of ontwikkelomgevingen implementeren. Uiteindelijk geeft TypeScript 5.0 je meer controle door het gebruik van flexibelere aanpassingsvlaggen in je code.

6 – Wijzigingen in runtimevereisten

Met de introductie van TypeScript 5.0 zijn er enkele wijzigingen in je runtimevereisten. Het platform gebruikt nu ECMAScript 2018, waarbij de minimale engine-vereiste is ingesteld op 12.20. Je moet upgraden naar deze versie – vooral als je Node.js gebruikt – als je wilt profiteren van de nieuwe functies van TypeScript 5.0. Het is ook belangrijk om te weten dat Microsoft een aantal interfaces heeft verwijderd die als verouderd of overbodig worden beschouwd. Daarnaast zijn er diverse wijzigingen in lib.dts doorgevoerd die van invloed kunnen zijn op de werking van code die in een eerdere versie van TypeScript is gemaakt. Sommige eigenschappen zijn bijvoorbeeld omgezet in numerieke letterlijke typen in plaats van getallen, en u zult merken dat methoden voor knippen, kopiëren en plakken naar andere interfaces zijn verplaatst.

7 – De moduleResolution bundler

Hoewel geïntroduceerd in TypeScript 4.7, heeft de "moduleResolution bundler" enkele kleine wijzigingen ondergaan in versie 5.0 van het platform. Het modelleert nog steeds hoe een bundler werkt en ondersteunt een hybride opzoekstrategie, indien nodig. Dat stelt je in staat om de opdracht te gebruiken voor moderne bundlers, zoals Webpack, Parcel en Vite, en bevordert tevens de compatibiliteit met elke bundler die gebruikmaakt van hybride lookup. Met TypeScript 5.0 introduceert Microsoft meer flexibiliteit in zijn module-resolutiestrategie. Hiermee kun je de resolutieparameters van TypeScript aanpassen, waardoor de compatibiliteit van het platform met verschillende runtimes en bundlers wordt vergroot. Bovendien kan de opdracht "moduleResolution bundler" u nu helpen bij het oplossen van imports en exports met betrekking tot package.json.

8 – Ondersteuning voor "export type *"

Met TypeScript 3.8 introduceerde Microsoft de mogelijkheid om alleen type-imports uit te voeren. Maar de gecreëerde syntax bood geen ondersteuning voor exports – een duidelijke omissie die is opgelost met TypeScript 5.0.

U kunt nu een type exporteren vanuit een module of een type exporteren als een namespace vanuit een module. De wijziging brengt het exporteren van alleen typen op gelijke voet met het importeren, waardoor er meer flexibiliteit is bij het exporteren van modules in de nieuwste versie van het platform.

Ontdek wat Microsoft te bieden heeft met TypeScript 5.0

De belangrijkste conclusie is dat Microsoft er alles aan heeft gedaan om TypeScript aantrekkelijker te maken voor programmeurs. De snelheidsverbeteringen zijn een welkome – en broodnodige – reeks optimalisaties die het platform gebruiksvriendelijker maken. Verdere snelheidsverbeteringen kunnen het gevolg zijn van de volledige implementatie van decorators, waarmee je code kunt hergebruiken in plaats van deze telkens opnieuw te typen. Andere wijzigingen – zoals de introductie van nieuwe vlaggen – zijn bedoeld om je meer controle te geven over hoe je code werkt of, in het geval van "const"-parameters, wat je code aanroept. Experimenteren kan nodig zijn. Bovendien zul je wellicht merken dat een aantal van de wijzigingen van invloed zijn op je oudere code. Maar al met al is TypeScript 5.0 een belangrijke stap voorwaarts in de bruikbaarheid en flexibiliteit van het Microsoft-platform.

You may also like
Person avatar
Person avatar
Person avatar
We Staan Voor je Klaar

Ons expertteam zit klaar - dag en nacht - om je te helpen met planning, budgetten en het realiseren van jouw idee. Naadloos. Geen stress. Geen vertraging.

Laten We Dit Samen Uitvogelen

Laten We Praten En Iets Geweldigs Bouwen Samen.

Of het nu gaat om een schaalbaar SaaS-platform, een innovatieve marktplaats, een cutting-edge eCommerce-oplossing of een gedurfd nieuw techidee - wij hebben de expertise om het realiteit te maken. Naadloos en zonder stress.Geen drama, geen bla bla - gewoon retegoede digitale oplossingen.

Interactivated solutions contact person

Roy Van Eijsselsteijn

CEO | Head of Business Development

Schrijf Een Bericht

Door het formulier te verzenden, ga ik akkoord met de regels voor de verwerking van mijn persoonsgegevens zoals beschreven in hetPrivacybeleid.

Deze site wordt beschermd door reCAPTCHA en de Google Privacy Policy en Servicevoorwaarden zijn van toepassing.