{"id":51849,"date":"2023-04-18T13:27:41","date_gmt":"2023-04-18T11:27:41","guid":{"rendered":"https:\/\/kinsta.com\/nl\/?p=51849&#038;preview=true&#038;preview_id=51849"},"modified":"2023-06-07T10:30:44","modified_gmt":"2023-06-07T08:30:44","slug":"typescript-5-0","status":"publish","type":"post","link":"https:\/\/kinsta.com\/nl\/blog\/typescript-5-0\/","title":{"rendered":"Wat is er nieuw in TypeScript 5.0: declarators, const type, verbetering van enums, snelheid en nog veel meer!"},"content":{"rendered":"<p>TypeScript 5.0 werd officieel uitgebracht op 16 maart 2023, en is nu voor iedereen te gebruiken. Deze release brengt veel nieuwe mogelijkheden met zich mee met als doel TypeScript kleiner, eenvoudiger en sneller te maken.<\/p>\n<p>Deze nieuwe release moderniseert decorators voor klasse-aanpassingen, waardoor klassen en hun members op een herbruikbare manier kunnen worden aangepast. <a href=\"https:\/\/kinsta.com\/nl\/blog\/soorten-developers\/\">Ontwikkelaars<\/a> kunnen nu een const modifier toevoegen aan een type parameter declaratie, waardoor const-achtige inferenties de standaard worden. De nieuwe versie maakt ook alle enums union enums, wat de codestructuur vereenvoudigt en de TypeScript ervaring versnelt.<\/p>\n<p>In dit artikel worden de veranderingen in TypeScript 5.0 besproken, met een diepgaande blik op de nieuwe functies en mogelijkheden.<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Aan de slag met TypeScript 5.0<\/h2>\n<p>TypeScript is een offici\u00eble compiler die je met <a href=\"https:\/\/kinsta.com\/blog\/what-is-npm\/\">npm<\/a> in je project kunt installeren. Als je TypeScript 5.0 in je project wilt gaan gebruiken, kun je het volgende commando uitvoeren in de map van je project:<\/p>\n<pre><code class=\"language-bash\">npm install -D typescript<\/code><\/pre>\n<p>Dit zal de compiler installeren in de map <strong>node_modules<\/strong>, die je nu kunt uitvoeren met het commando <code>npx tsc<\/code>.<\/p>\n<p>Je kunt in deze documentatie ook instructies vinden over het gebruik van de nieuwere versie van TypeScript in <a href=\"https:\/\/code.visualstudio.com\/docs\/typescript\/typescript-compiling#_using-the-workspace-version-of-typescript\" target=\"_blank\" rel=\"noopener noreferrer\">Visual Studio Code<\/a>.<\/p>\n\n<h2>Wat is er nieuw in TypeScript 5.0?<\/h2>\n<p>In dit artikel verkennen we 5 belangrijke updates die in TypeScript zijn ge\u00efntroduceerd. Deze features zijn:<\/p>\n<div><\/div><kinsta-auto-toc list-style=\"decimal\" selector=\"h3\" count-number=\"-1\" sub-toc=\"true\"><\/kinsta-auto-toc>\n<h3>Gemoderniseerde decorators<\/h3>\n<p>Decorators bestaan al een tijdje in TypeScript onder een experimentele vlag, maar de nieuwe versie brengt ze in overeenstemming met het ECMAScript voorstel, dat nu in <a href=\"https:\/\/github.com\/tc39\/proposal-decorators\" target=\"_blank\" rel=\"noopener noreferrer\">stadium 3<\/a> is, wat betekent dat het in een stadium is waarin het wordt toegevoegd aan TypeScript.<\/p>\n<p>Decorators zijn een manier om het gedrag van klassen en hun members op een herbruikbare manier aan te passen. Als je bijvoorbeeld een klasse hebt die twee methoden heeft, <code>greet<\/code> en <code>getAge<\/code>:<\/p>\n<pre><code class=\"language-typescript\">class Person {\n    name: string;\n    age: number;\n    constructor(name: string, age: number) {\n        this.name = name;\n        this.age = age;\n    }\n\n    greet() {\n        console.log(`Hello, my name is ${this.name}.`);\n    }\n\n    getAge() {\n        console.log(`I am ${this.age} years old.`);\n    }\n}\n\nconst p = new Person('Ron', 30);\np.greet();\np.getAge();<\/code><\/pre>\n<p>In echte gebruiksgevallen zou deze klasse ingewikkelder methoden moeten hebben die wat async logica afhandelen en neveneffecten hebben, e.t.c., waarbij je enkele <code>console.log<\/code> calls zou willen gebruiken om de methoden te helpen debuggen.<\/p>\n<pre><code class=\"language-typescript\">class Person {\n    name: string;\n    age: number;\n    constructor(name: string, age: number) {\n        this.name = name;\n        this.age = age;\n    }\n\n    greet() {\n        console.log('LOG: Method Execution Starts.');\n        console.log(`Hello, my name is ${this.name}.`);\n        console.log('LOG: Method Execution Ends.');\n    }\n\n    getAge() {\n        console.log('LOG: Method Execution Starts.');\n        console.log(`I am ${this.age} years old.`);\n        console.log('Method Execution Ends.');\n    }\n}\n\nconst p = new Person('Ron', 30);\np.greet();\np.getAge();<\/code><\/pre>\n<p>Dit is een vaak voorkomend patroon, en het zou handig zijn om een oplossing te hebben voor elke methode.<\/p>\n<p>Dit is waar decorators om de hoek komen kijken. We kunnen een functie defini\u00ebren met de naam <code>debugMethod<\/code> die er als volgt uitziet:<\/p>\n<pre><code class=\"language-typescript\">function debugMethod(originalMethod: any, context: any) {\n    function replacementMethod(this: any, ...args: any[]) {\n        console.log('Method Execution Starts.');\n        const result = originalMethod.call(this, ...args);\n        console.log('Method Execution Ends.');\n        return result;\n    }\n    return replacementMethod;\n}<\/code><\/pre>\n<p>In bovenstaande code neemt de <code>debugMethod<\/code> de oorspronkelijke methode (<code>originalMethod<\/code>) en geeft een functie terug die het volgende doet:<\/p>\n<ol start=\"1\">\n<li>Logt een bericht &#8220;Method Execution Starts&#8221;.<\/li>\n<li>Geeft de oorspronkelijke methode en al zijn argumenten door (inclusief dit).<\/li>\n<li>Logt het bericht &#8220;Method Execution Ends&#8221;.<\/li>\n<li>Geeft terug wat de oorspronkelijke methode teruggaf.<\/li>\n<\/ol>\n<p>Door decorators te gebruiken, kun je de <code>debugMethod<\/code> toepassen op je methoden, zoals in onderstaande code:<\/p>\n<pre><code class=\"language-typescript\">class Person {\n    name: string;\n    age: number;\n    constructor(name: string, age: number) {\n        this.name = name;\n        this.age = age;\n    }\n    @debugMethod\n    greet() {\n        console.log(`Hello, my name is ${this.name}.`);\n    }\n    @debugMethod\n    getAge() {\n        console.log(`I am ${this.age} years old.`);\n    }\n}\nconst p = new Person('Ron', 30);\np.greet();\np.getAge();<\/code><\/pre>\n<p>Dit levert het volgende op:<\/p>\n<pre><code class=\"language-bash\">LOG: Entering method.\nHello, my name is Ron.\nLOG: Exiting method.\nLOG: Entering method.\nI am 30 years old.\nLOG: Exiting method.<\/code><\/pre>\n<p>Bij het defini\u00ebren van de decoratorfunctie (<code>debugMethod<\/code>) wordt een tweede parameter doorgegeven met de naam <code>context<\/code> (het is het contextobject &#8211; heeft wat nuttige informatie over hoe de gedecoreerde methode is gedeclareerd en ook de naam van de methode). Je kunt je <code>debugMethod<\/code> bijwerken om de naam van de methode uit het object <code>context<\/code> te halen:<\/p>\n<pre><code class=\"language-typescript\">function debugMethod(\n    originalMethod: any,\n    context: ClassMethodDecoratorContext\n) {\n    const methodName = String(context.name);\n    function replacementMethod(this: any, ...args: any[]) {\n        console.log(`'${methodName}' Execution Starts.`);\n        const result = originalMethod.call(this, ...args);\n        console.log(`'${methodName}' Execution Ends.`);\n        return result;\n    }\n    return replacementMethod;\n}<\/code><\/pre>\n<p>Als je je code uitvoert, zal de uitvoer nu de naam dragen van elke methode die &#8220;gedecoreerd&#8221; is met de <code>debugMethod<\/code> decorator:<\/p>\n<pre><code class=\"language-bash\">'greet' Execution Starts.\nHello, my name is Ron.\n'greet' Execution Ends.\n'getAge' Execution Starts.\nI am 30 years old.\n'getAge' Execution Ends.<\/code><\/pre>\n<p>Er is meer mogelijk met decoratoren. Bekijk gerust het <a href=\"https:\/\/github.com\/microsoft\/TypeScript\/pull\/50820\">oorspronkelijke pull request<\/a> voor meer informatie over het gebruik van decoratoren in TypeScript.<\/p>\n<h3>Introductie van const type parameters<\/h3>\n<p>Dit is een andere grote release die je een nieuw hulpmiddel geeft met generics om de inferentie te verbeteren die je krijgt als je functies callt. Standaard, wanneer je waarden declareert met <code>const<\/code>, leidt TypeScript het type af en niet de letterlijke waarden:<\/p>\n<pre><code class=\"language-typescript\">\/\/ Inferred type: string[]\nconst names = ['John', 'Jake', 'Jack'];<\/code><\/pre>\n<p>Tot nu toe moest je, om de gewenste inferentie te krijgen, de const assertie gebruiken door &#8220;as const&#8221; toe te voegen:<\/p>\n<pre><code class=\"language-typescript\">\/\/ Inferred type: readonly [\"John\", \"Jake\", \"Jack\"]\nconst names = ['John', 'Jake', 'Jack'] as const;<\/code><\/pre>\n<p>Als je functies callt, is het vergelijkbaar. In de onderstaande code is het afgeleide type van <strong>landen<\/strong> <code>string[]<\/code>:<\/p>\n<pre><code class=\"language-typescript\">type HasCountries = { countries: readonly string[] };\nfunction getCountriesExactly(arg: T): T['countries'] {\n    return arg.countries;\n}\n\n\/\/ Inferred type: string[]\nconst countries = getCountriesExactly({ countries: ['USA', 'Canada', 'India'] });<\/code><\/pre>\n<p>Je kunt een specifieker type wensen waarvan een manier om het tot nu toe op te lossen was om de <code>as const<\/code> assertie toe te voegen:<\/p>\n<pre><code class=\"language-typescript\">\/\/ Inferred type: readonly [\"USA\", \"Canada\", \"India\"]\nconst names = getNamesExactly({ countries: ['USA', 'Canada', 'India'] } as const);<\/code><\/pre>\n<p>Dit kan lastig zijn om te onthouden en uit te voeren. TypeScript 5.0 introduceert echter een nieuwe mogelijkheid waarbij je een const modifier kunt toevoegen aan een type parameter declaratie, waardoor automatisch een const-achtige inferentie als standaard wordt toegepast.<\/p>\n<pre><code class=\"language-typescript\">type HasCountries = { countries: readonly string[] };\nfunction getNamesExactly(arg: T): T['countries'] {\n    return arg.countries;\n}\n\n\/\/ Inferred type: readonly [\"USA\", \"Canada\", \"India\"]\nconst names = getNamesExactly({ countries: ['USA', 'Canada', 'India'] });<\/code><\/pre>\n<p>Met <code>const<\/code> type parameters kunnen developers de bedoeling duidelijker in hun code uitdrukken. Als het de bedoeling is dat een variabele constant is en nooit verandert, zorgt het gebruik van een <code>const<\/code> type parameter ervoor dat hij nooit per ongeluk kan worden veranderd.<\/p>\n<p>Je kunt het <a href=\"https:\/\/github.com\/microsoft\/TypeScript\/pull\/51865\">oorspronkelijke pull request<\/a> bekijken voor meer informatie over hoe de const type parameter werkt in TypeScript.<\/p>\n<h3>Verbeteringen aan enums<\/h3>\n<p>Enums in TypeScript zijn een krachtige constructie waarmee developers een reeks constanten met naam kunnen defini\u00ebren. In TypeScript 5.0 zijn verbeteringen aangebracht aan enums om ze nog flexibeler en bruikbaarder te maken.<\/p>\n<p>Bijvoorbeeld, als je de volgende enum in een functie laat opnemen:<\/p>\n<pre><code class=\"language-typescript\">enum Color {\n    Red,\n    Green,\n    Blue,\n}\n\nfunction getColorName(colorLevel: Color) {\n    return colorLevel;\n}\n\nconsole.log(getColorName(1));<\/code><\/pre>\n<p>V\u00f3\u00f3r de invoering van TypeScript 5.0 kon je een verkeerd levelnummer doorgeven, en het zou geen fout gooien. Maar met de invoering van TypeScript 5.0 wordt er onmiddellijk een fout gegooid.<\/p>\n<p>Ook maakt de nieuwe versie van alle enums union enums door voor elk berekende member een uniek type te maken. Deze verbetering maakt het mogelijk om alle enums te vernauwen en hun members als types aan te duiden:<\/p>\n<pre><code class=\"language-typescript\">enum Color {\n    Red,\n    Purple,\n    Orange,\n    Green,\n    Blue,\n    Black,\n    White,\n}\n\ntype PrimaryColor = Color.Red | Color.Green | Color.Blue;\n\nfunction isPrimaryColor(c: Color): c is PrimaryColor {\n    return c === Color.Red || c === Color.Green || c === Color.Blue;\n}\n\nconsole.log(isPrimaryColor(Color.White)); \/\/ Outputs: false\nconsole.log(isPrimaryColor(Color.Red)); \/\/ Outputs: true<\/code><\/pre>\n<h3>Prestatieverbeteringen van TypeScript 5.0<\/h3>\n<p>TypeScript 5.0 bevat talrijke belangrijke wijzigingen in de codestructuur, gegevensstructuren en algoritmische uitbreidingen. Hierdoor is de hele TypeScript ervaring verbeterd, van installatie tot uitvoering, waardoor het sneller en effici\u00ebnter wordt.<\/p>\n<p>Het verschil tussen de pakketgrootte van TypeScript 5.0 en 4.9 is bijvoorbeeld behoorlijk indrukwekkend.<\/p>\n<p>TypeScript is onlangs gemigreerd van namespaces naar modules, waardoor het gebruik kan maken van moderne bouwtools die optimalisaties zoals scope hoisting kunnen uitvoeren. Ook het verwijderen van wat verouderde code heeft ongeveer 26,4 MB van de 63,8 MB van TypeScript 4.9 afgehaald.<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/04\/pasted-image-0.png\" alt=\"TypeScript pakketgrootte\" width=\"1600\" height=\"959\"><figcaption class=\"wp-caption-text\">TypeScript pakketgrootte<\/figcaption><\/figure>\n<p>Hier zijn nog een paar interessante winstpunten in snelheid en omvang tussen TypeScript 5.0 en 4.9:<\/p>\n<div class=\"responsive-table\">\n<table>\n<tbody>\n<tr>\n<td colspan=\"1\" rowspan=\"1\"><strong>Scenario<\/strong><\/td>\n<td colspan=\"1\" rowspan=\"1\"><strong>Tijd of omvang ten opzichte van TS 4.9<\/strong><\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\">materiaal-ui bouwtijd<\/td>\n<td colspan=\"1\" rowspan=\"1\">90%<\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\">TypeScript compiler opstarttijd<\/td>\n<td colspan=\"1\" rowspan=\"1\">89%<\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\">Playwright bouwtijd<\/td>\n<td colspan=\"1\" rowspan=\"1\">88%<\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\">TypeScript compiler zelfbouwtijd<\/td>\n<td colspan=\"1\" rowspan=\"1\">87%<\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\">Outlook Web bouwtijd<\/td>\n<td colspan=\"1\" rowspan=\"1\">82%<\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\">VS Code bouwtijd<\/td>\n<td colspan=\"1\" rowspan=\"1\">80%<\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\">typescript npm pakketgrootte<\/td>\n<td colspan=\"1\" rowspan=\"1\">59%<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h3>Bundler resolutie voor betere module resolutie<\/h3>\n<p>Als je in TypeScript een import statement schrijft, moet de compiler weten waar de import naar verwijst. Hij doet dit met behulp van module-resolutie. Als je bijvoorbeeld <code>import { a } from \"moduleA\"<\/code> schrijft, moet de compiler de definitie van <code>a<\/code> in <code>moduleA<\/code> kennen om het gebruik ervan te controleren.<\/p>\n<p>In TypeScript 4.7 zijn twee nieuwe opties toegevoegd voor de instellingen <code>--module<\/code> en <code>moduleResolution<\/code>: <code>node16<\/code> en <code>nodenext<\/code>.<\/p>\n<p>Het doel van deze opties was om de exacte opzoekregels voor ECMAScript modules in <a href=\"https:\/\/kinsta.com\/nl\/blog\/node-js-vs-php\/\">Node.js<\/a> nauwkeuriger weer te geven. Deze modus heeft echter verschillende beperkingen die niet worden afgedwongen door andere gereedschappen.<\/p>\n<p>Bijvoorbeeld, in een ECMAScript module in Node.js moet elke relatieve import een bestandsextensie bevatten om correct te werken:<\/p>\n<pre><code class=\"language-typescript\">import * as utils from \".\/utils\"; \/\/ Wrong \n\nimport * as utils from \".\/utils.mjs\"; \/\/ Correct<\/code><\/pre>\n<p>TypeScript heeft een nieuwe strategie ge\u00efntroduceerd genaamd &#8220;moduleResolution bundler.&#8221; Deze strategie kan ge\u00efmplementeerd worden door de volgende code toe te voegen in de sectie &#8220;compilerOptions&#8221; van je TypeScript configuratiebestand:<\/p>\n<pre><code class=\"language-json\">{\n    \"compilerOptions\": {\n        \"target\": \"esnext\",\n        \"moduleResolution\": \"bundler\"\n    }\n}<\/code><\/pre>\n<p>Deze nieuwe strategie is geschikt voor degenen die moderne bundlers gebruiken, zoals Vite, esbuild, swc, Webpack, Parcel en andere die een hybride lookup strategie gebruiken.<\/p>\n<p>Je kunt het <a href=\"https:\/\/github.com\/microsoft\/TypeScript\/pull\/51669\" target=\"_blank\" rel=\"noopener noreferrer\">oorspronkelijke pull request en de implementatie ervan<\/a> bekijken voor meer informatie over hoe <code>moduleResolution<\/code> bundler werkt in TypeScript.<\/p>\n<h2>Afschrijvingen<\/h2>\n<p>TypeScript 5.0 gaat gepaard met een paar afschrijvingen , waaronder runtime eisen, lib.d.ts veranderingen, en <a href=\"https:\/\/kinsta.com\/nl\/blog\/graphql-nodejs\/\">API<\/a> brekende veranderingen.<\/p>\n<ol start=\"1\">\n<li><strong>Runtime eisen:<\/strong> TypeScript richt zich nu op ECMAScript 2018, en het pakket stelt een minimale motorverwachting van 12.20. Daarom moeten gebruikers van Node.js een minimale versie van 12.20 of later hebben om TypeScript 5.0 te kunnen gebruiken.<\/li>\n<li><strong>lib.d.ts veranderingen:<\/strong> Er zijn enkele wijzigingen aangebracht in de manier waarop types voor de DOM worden gegenereerd, die gevolgen kunnen hebben voor bestaande code. In het bijzonder zijn bepaalde properties omgezet van numerieke naar letterlijke types, en properties en methoden voor knippen, kopi\u00ebren en plakken zijn over interfaces heen verplaatst.<\/li>\n<li><strong>Breaking API wijzigingen:<\/strong> Enkele onnodige interfaces zijn verwijderd, en er zijn enkele correctheidsverbeteringen aangebracht. TypeScript 5.0 is ook overgegaan op modules.<\/li>\n<\/ol>\n<p>TypeScript 5.0 heeft bepaalde instellingen en hun bijbehorende waarden afgeschaft, waaronder <code>target: ES3<\/code>, <code>out<\/code>, <code>noImplicitUseStrict<\/code>, <code>keyofStringsOnly<\/code>, <code>suppressExcessPropertyErrors<\/code>, <code>suppressImplicitAnyIndexErrors<\/code>, <code>noStrictGenericChecks<\/code>, <code>charset<\/code>, <code>importsNotUsedAsValues<\/code>, en <code>preserveValueImports<\/code>, evenals prepend in projectreferenties.<\/p>\n<p>Hoewel deze configuraties geldig blijven tot TypeScript 5.5, wordt er een waarschuwing gegeven aan gebruikers die ze nog gebruiken.<\/p>\n\n<h2>Samenvatting<\/h2>\n<p>In dit artikel heb je enkele van de belangrijkste mogelijkheden en verbeteringen geleerd die TypeScript 5.0 brengt, zoals verbeteringen aan enums, bundler resolutie en const type parameters, samen met verbeteringen aan snelheid en grootte.<\/p>\n<p>Als je TypeScript overweegt voor je volgende projecten, <a href=\"https:\/\/sevalla.com\/application-hosting\/\">probeer dan eens gratis Kinsta&#8217;s Applicatie Hosting<\/a>.<\/p>\n<p><em>Nu is het jouw beurt! Welke functies of verbeteringen vind jij het meest aantrekkelijk in TypeScript 5.0? Zijn er belangrijke die we misschien over het hoofd hebben gezien? Laat het ons weten in de comments.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>TypeScript 5.0 werd officieel uitgebracht op 16 maart 2023, en is nu voor iedereen te gebruiken. Deze release brengt veel nieuwe mogelijkheden met zich mee met &#8230;<\/p>\n","protected":false},"author":287,"featured_media":51850,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[847,848],"class_list":["post-51849","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-javascript-frameworks","topic-javascript-tutorials"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Wat is er nieuw in TypeScript 5.0: declarators, const type, verbetering van enums, snelheid - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Verdiep je in de nieuwe TypeScript 5.0 en ontdek wat er nieuw is, waaronder declarators, const type, verbetering van enums, en nog veel meer.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/nl\/blog\/typescript-5-0\/\" \/>\n<meta property=\"og:locale\" content=\"nl_NL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Wat is er nieuw in TypeScript 5.0: declarators, const type, verbetering van enums, snelheid en nog veel meer!\" \/>\n<meta property=\"og:description\" content=\"Verdiep je in de nieuwe TypeScript 5.0 en ontdek wat er nieuw is, waaronder declarators, const type, verbetering van enums, en nog veel meer.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/nl\/blog\/typescript-5-0\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-04-18T11:27:41+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-06-07T08:30:44+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/04\/typescript-50.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"3042\" \/>\n\t<meta property=\"og:image:height\" content=\"1521\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Joel Olawanle\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Verdiep je in de nieuwe TypeScript 5.0 en ontdek wat er nieuw is, waaronder declarators, const type, verbetering van enums, en nog veel meer.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/04\/typescript-50.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@olawanle_joel\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_NL\" \/>\n<meta name=\"twitter:label1\" content=\"Geschreven door\" \/>\n\t<meta name=\"twitter:data1\" content=\"Joel Olawanle\" \/>\n\t<meta name=\"twitter:label2\" content=\"Geschatte leestijd\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/typescript-5-0\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/typescript-5-0\/\"},\"author\":{\"name\":\"Joel Olawanle\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\"},\"headline\":\"Wat is er nieuw in TypeScript 5.0: declarators, const type, verbetering van enums, snelheid en nog veel meer!\",\"datePublished\":\"2023-04-18T11:27:41+00:00\",\"dateModified\":\"2023-06-07T08:30:44+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/typescript-5-0\/\"},\"wordCount\":1476,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/typescript-5-0\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/04\/typescript-50.jpg\",\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/nl\/blog\/typescript-5-0\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/typescript-5-0\/\",\"url\":\"https:\/\/kinsta.com\/nl\/blog\/typescript-5-0\/\",\"name\":\"Wat is er nieuw in TypeScript 5.0: declarators, const type, verbetering van enums, snelheid - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/typescript-5-0\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/typescript-5-0\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/04\/typescript-50.jpg\",\"datePublished\":\"2023-04-18T11:27:41+00:00\",\"dateModified\":\"2023-06-07T08:30:44+00:00\",\"description\":\"Verdiep je in de nieuwe TypeScript 5.0 en ontdek wat er nieuw is, waaronder declarators, const type, verbetering van enums, en nog veel meer.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/typescript-5-0\/#breadcrumb\"},\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/nl\/blog\/typescript-5-0\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/typescript-5-0\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/04\/typescript-50.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/04\/typescript-50.jpg\",\"width\":3042,\"height\":1521,\"caption\":\"Wat is er nieuw in TypeScript 5.0: declarators, const type, verbetering van enums, snelheid en nog veel meer!\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/typescript-5-0\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/nl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JavaScript tutorials\",\"item\":\"https:\/\/kinsta.com\/nl\/onderwerpen\/javascript-tutorials\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Wat is er nieuw in TypeScript 5.0: declarators, const type, verbetering van enums, snelheid en nog veel meer!\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/nl\/#website\",\"url\":\"https:\/\/kinsta.com\/nl\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Snelle, veilige, premium hostingoplossingen\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/nl\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"nl-NL\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/nl\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/\",\"https:\/\/x.com\/Kinsta_NL\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\",\"name\":\"Joel Olawanle\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g\",\"caption\":\"Joel Olawanle\"},\"description\":\"Joel is a Frontend developer working at Kinsta as a Technical Editor. He is a passionate teacher with love for open source and has written over 300 technical articles majorly around JavaScript and it's frameworks.\",\"sameAs\":[\"https:\/\/joelolawanle.com\/\",\"https:\/\/www.linkedin.com\/in\/olawanlejoel\/\",\"https:\/\/x.com\/olawanle_joel\",\"https:\/\/www.youtube.com\/@joelolawanle\"],\"gender\":\"male\",\"knowsAbout\":[\"JavaScript\",\"React\",\"Next.js\"],\"knowsLanguage\":[\"English\"],\"jobTitle\":\"Technical Editor\",\"worksFor\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/nl\/blog\/author\/joelolawanle\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Wat is er nieuw in TypeScript 5.0: declarators, const type, verbetering van enums, snelheid - Kinsta\u00ae","description":"Verdiep je in de nieuwe TypeScript 5.0 en ontdek wat er nieuw is, waaronder declarators, const type, verbetering van enums, en nog veel meer.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/nl\/blog\/typescript-5-0\/","og_locale":"nl_NL","og_type":"article","og_title":"Wat is er nieuw in TypeScript 5.0: declarators, const type, verbetering van enums, snelheid en nog veel meer!","og_description":"Verdiep je in de nieuwe TypeScript 5.0 en ontdek wat er nieuw is, waaronder declarators, const type, verbetering van enums, en nog veel meer.","og_url":"https:\/\/kinsta.com\/nl\/blog\/typescript-5-0\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/","article_published_time":"2023-04-18T11:27:41+00:00","article_modified_time":"2023-06-07T08:30:44+00:00","og_image":[{"width":3042,"height":1521,"url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/04\/typescript-50.jpg","type":"image\/jpeg"}],"author":"Joel Olawanle","twitter_card":"summary_large_image","twitter_description":"Verdiep je in de nieuwe TypeScript 5.0 en ontdek wat er nieuw is, waaronder declarators, const type, verbetering van enums, en nog veel meer.","twitter_image":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/04\/typescript-50.jpg","twitter_creator":"@olawanle_joel","twitter_site":"@Kinsta_NL","twitter_misc":{"Geschreven door":"Joel Olawanle","Geschatte leestijd":"9 minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/nl\/blog\/typescript-5-0\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/nl\/blog\/typescript-5-0\/"},"author":{"name":"Joel Olawanle","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07"},"headline":"Wat is er nieuw in TypeScript 5.0: declarators, const type, verbetering van enums, snelheid en nog veel meer!","datePublished":"2023-04-18T11:27:41+00:00","dateModified":"2023-06-07T08:30:44+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/nl\/blog\/typescript-5-0\/"},"wordCount":1476,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/nl\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/nl\/blog\/typescript-5-0\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/04\/typescript-50.jpg","inLanguage":"nl-NL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/nl\/blog\/typescript-5-0\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/nl\/blog\/typescript-5-0\/","url":"https:\/\/kinsta.com\/nl\/blog\/typescript-5-0\/","name":"Wat is er nieuw in TypeScript 5.0: declarators, const type, verbetering van enums, snelheid - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/nl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/nl\/blog\/typescript-5-0\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/nl\/blog\/typescript-5-0\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/04\/typescript-50.jpg","datePublished":"2023-04-18T11:27:41+00:00","dateModified":"2023-06-07T08:30:44+00:00","description":"Verdiep je in de nieuwe TypeScript 5.0 en ontdek wat er nieuw is, waaronder declarators, const type, verbetering van enums, en nog veel meer.","breadcrumb":{"@id":"https:\/\/kinsta.com\/nl\/blog\/typescript-5-0\/#breadcrumb"},"inLanguage":"nl-NL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/nl\/blog\/typescript-5-0\/"]}]},{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/blog\/typescript-5-0\/#primaryimage","url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/04\/typescript-50.jpg","contentUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/04\/typescript-50.jpg","width":3042,"height":1521,"caption":"Wat is er nieuw in TypeScript 5.0: declarators, const type, verbetering van enums, snelheid en nog veel meer!"},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/nl\/blog\/typescript-5-0\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/nl\/"},{"@type":"ListItem","position":2,"name":"JavaScript tutorials","item":"https:\/\/kinsta.com\/nl\/onderwerpen\/javascript-tutorials\/"},{"@type":"ListItem","position":3,"name":"Wat is er nieuw in TypeScript 5.0: declarators, const type, verbetering van enums, snelheid en nog veel meer!"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/nl\/#website","url":"https:\/\/kinsta.com\/nl\/","name":"Kinsta\u00ae","description":"Snelle, veilige, premium hostingoplossingen","publisher":{"@id":"https:\/\/kinsta.com\/nl\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/nl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"nl-NL"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/nl\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/nl\/","logo":{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/","https:\/\/x.com\/Kinsta_NL","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07","name":"Joel Olawanle","image":{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/051bf577ce2c837846a1db9eef184758?s=96&d=mm&r=g","caption":"Joel Olawanle"},"description":"Joel is a Frontend developer working at Kinsta as a Technical Editor. He is a passionate teacher with love for open source and has written over 300 technical articles majorly around JavaScript and it's frameworks.","sameAs":["https:\/\/joelolawanle.com\/","https:\/\/www.linkedin.com\/in\/olawanlejoel\/","https:\/\/x.com\/olawanle_joel","https:\/\/www.youtube.com\/@joelolawanle"],"gender":"male","knowsAbout":["JavaScript","React","Next.js"],"knowsLanguage":["English"],"jobTitle":"Technical Editor","worksFor":"Kinsta","url":"https:\/\/kinsta.com\/nl\/blog\/author\/joelolawanle\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/51849","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/users\/287"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/comments?post=51849"}],"version-history":[{"count":11,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/51849\/revisions"}],"predecessor-version":[{"id":51868,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/51849\/revisions\/51868"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/51849\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/51849\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/51849\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/51849\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/51849\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/51849\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/51849\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/51849\/translations\/es"},{"embeddable":true,"hreflang":"sv","title":"Swedish","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/51849\/translations\/se"},{"embeddable":true,"hreflang":"da","title":"Danish","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/51849\/translations\/dk"},{"href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/51849\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/media\/51850"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/media?parent=51849"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/tags?post=51849"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/topic?post=51849"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}