{"id":50123,"date":"2023-04-18T12:22:38","date_gmt":"2023-04-18T11:22:38","guid":{"rendered":"https:\/\/kinsta.com\/dk\/?p=50123&#038;preview=true&#038;preview_id=50123"},"modified":"2023-08-24T10:19:51","modified_gmt":"2023-08-24T09:19:51","slug":"typescript-5-0","status":"publish","type":"post","link":"https:\/\/kinsta.com\/dk\/blog\/typescript-5-0\/","title":{"rendered":"Hvad er nyt i TypeScript 5.0: Deklaratorer, Const Type, Enums Improvement, hastighed og meget mere!"},"content":{"rendered":"<p>TypeScript 5.0 blev officielt frigivet den 16. marts 2023 og er nu tilg\u00e6ngelig for alle. Denne version introducerer mange nye funktioner med det form\u00e5l at g\u00f8re TypeScript mindre, enklere og hurtigere.<\/p>\n<p>Denne nye version moderniserer decorators til klassetilpasning, hvilket g\u00f8r det muligt at tilpasse klasser og deres medlemmer p\u00e5 en genanvendelig m\u00e5de. <a href=\"https:\/\/kinsta.com\/dk\/blog\/typer-udviklere\/\">Udviklere<\/a> kan nu tilf\u00f8je en const-modifikator til en typeparameterdeklaration, s\u00e5 const-lignende inferencer kan v\u00e6re standard. Den nye version g\u00f8r ogs\u00e5 alle enums til union enums, hvilket forenkler kodestrukturen og fremskynder TypeScript-oplevelsen.<\/p>\n<p>I denne artikel vil du udforske de \u00e6ndringer, der er indf\u00f8rt i TypeScript 5.0, og f\u00e5 et dybdeg\u00e5ende kig p\u00e5 de nye funktioner og muligheder.<\/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>Kom godt i gang med TypeScript 5.0<\/h2>\n<p>TypeScript er en officiel compiler, som du kan installere i dit projekt ved hj\u00e6lp af <a href=\"https:\/\/kinsta.com\/blog\/what-is-npm\/\">npm<\/a>. Hvis du vil begynde at bruge TypeScript 5.0 i dit projekt, kan du k\u00f8re f\u00f8lgende kommando i projektmappen i dit projekt:<\/p>\n<pre><code class=\"language-bash\">npm install -D typescript<\/code><\/pre>\n<p>Dette vil installere compileren i mappen <strong>node_modules<\/strong>, som du nu kan k\u00f8re med kommandoen <code>npx tsc<\/code>.<\/p>\n<p>Du kan ogs\u00e5 finde instruktioner om brug af den nyere version af TypeScript i <a href=\"https:\/\/code.visualstudio.com\/docs\/typescript\/typescript-compiling#_using-the-workspace-version-of-typescript\" target=\"_blank\" rel=\"noopener noreferrer\">Visual Studio Code i denne dokumentation<\/a>.<\/p>\n\n<h2>Hvad er nyt i TypeScript 5.0?<\/h2>\n<p>I denne artikel skal vi unders\u00f8ge 5 st\u00f8rre opdateringer, der er indf\u00f8rt i TypeScript. Disse funktioner omfatter:<\/p>\n<div><\/div><kinsta-auto-toc list-style=\"decimal\" selector=\"h3\" count-number=\"-1\" sub-toc=\"true\"><\/kinsta-auto-toc>\n<h3>Moderniserede decorators<\/h3>\n<p>Decorators har eksisteret i TypeScript i et stykke tid under et eksperimentelt flag, men den nye version bringer dem op p\u00e5 h\u00f8jde med ECMAScript-forslaget, som nu er i <a href=\"https:\/\/github.com\/tc39\/proposal-decorators\" target=\"_blank\" rel=\"noopener noreferrer\">fase 3<\/a>, hvilket betyder, at det er i en fase, hvor det bliver tilf\u00f8jet til TypeScript.<\/p>\n<p>Decorators er en m\u00e5de at tilpasse opf\u00f8rslen af klasser og deres medlemmer p\u00e5 en genanvendelig m\u00e5de. Hvis du f.eks. har en klasse, der har to metoder, <code>greet<\/code> og <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>I virkelige brugssituationer b\u00f8r denne klasse have mere komplicerede metoder, der h\u00e5ndterer noget asynkron logik og har sideeffekter, f.eks. hvor du \u00f8nsker at inds\u00e6tte nogle <code>console.log<\/code>-opkald for at hj\u00e6lpe med at fejlfinde metoderne.<\/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>Dette er et hyppigt forekommende m\u00f8nster, og det ville v\u00e6re praktisk at have en l\u00f8sning, der kan anvendes p\u00e5 alle metoder.<\/p>\n<p>Det er her, at decorators kommer ind i billedet. Vi kan definere en funktion ved navn <code>debugMethod<\/code>, der ser ud som f\u00f8lger:<\/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>I koden ovenfor tager <code>debugMethod<\/code> den oprindelige metode (<code>originalMethod<\/code>) og returnerer en funktion, der g\u00f8r f\u00f8lgende:<\/p>\n<ol start=\"1\">\n<li>Logger en meddelelse &#8220;Method Execution Starts&#8221;.<\/li>\n<li>Overf\u00f8rer den oprindelige metode og alle dens argumenter (herunder dette).<\/li>\n<li>Logger en meddelelse &#8220;Method Execution Ends&#8221;.<\/li>\n<li>Returnerer det, som den oprindelige metode returnerede.<\/li>\n<\/ol>\n<p>Ved at bruge dekoratorer kan du anvende <code>debugMethod<\/code> p\u00e5 dine metoder som vist i koden nedenfor:<\/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>Dette vil give f\u00f8lgende:<\/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>Ved definitionen af decorator-funktionen (<code>debugMethod<\/code>) overf\u00f8res en anden parameter kaldet <code>context<\/code> (det er context-objektet &#8211; det indeholder nogle nyttige oplysninger om, hvordan den dekorerede metode blev erkl\u00e6ret, og ogs\u00e5 navnet p\u00e5 metoden). Du kan opdatere din <code>debugMethod<\/code> for at hente metodens navn fra <code>context<\/code> objektet:<\/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>N\u00e5r du k\u00f8rer din kode, vil output nu indeholde navnet p\u00e5 hver metode, der er dekoreret med <code>debugMethod<\/code>-decoratoren:<\/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>Der er mere, end du kan g\u00f8re med decoratorer. Du er velkommen til at tjekke den <a href=\"https:\/\/github.com\/microsoft\/TypeScript\/pull\/50820\">oprindelige pull request<\/a> for at f\u00e5 flere oplysninger om, hvordan man bruger decorators i TypeScript.<\/p>\n<h3>Introduktion af const Type Parameters<\/h3>\n<p>Dette er endnu en stor udgivelse, der giver dig et nyt v\u00e6rkt\u00f8j med generics for at forbedre den inferens, du f\u00e5r, n\u00e5r du kalder funktioner. Som standard, n\u00e5r du deklarerer v\u00e6rdier med <code>const<\/code>, udleder TypeScript typen og ikke dens bogstavelige v\u00e6rdier:<\/p>\n<pre><code class=\"language-typescript\">\/\/ Inferred type: string[]\nconst names = ['John', 'Jake', 'Jack'];<\/code><\/pre>\n<p>Indtil nu har du for at opn\u00e5 den \u00f8nskede inferens skullet bruge const-assertion ved at tilf\u00f8je &#8220;as const&#8221; for at opn\u00e5 den \u00f8nskede inferens:<\/p>\n<pre><code class=\"language-typescript\">\/\/ Inferred type: readonly [\"John\", \"Jake\", \"Jack\"]\nconst names = ['John', 'Jake', 'Jack'] as const;<\/code><\/pre>\n<p>N\u00e5r du kalder funktioner, er det p\u00e5 samme m\u00e5de. I koden nedenfor er den udledte type af <strong>lande<\/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>Du kan \u00f8nske en mere specifik type, som en m\u00e5de at l\u00f8se f\u00f8r nu har v\u00e6ret at tilf\u00f8je <code>as const<\/code> assertion:<\/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>Dette kan v\u00e6re sv\u00e6rt at huske og implementere. TypeScript 5.0 introducerer imidlertid en ny funktion, hvor du kan tilf\u00f8je en const-modifikator til en typeparameterdeklaration, hvilket automatisk vil anvende en const-lignende inferens som standard.<\/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>Ved at bruge <code>const<\/code> typeparametre kan udviklere udtrykke hensigten mere klart i deres kode. Hvis en variabel skal v\u00e6re konstant og aldrig \u00e6ndres, sikrer brugen af en <code>const<\/code> typeparameter, at den aldrig kan \u00e6ndres ved et uheld.<\/p>\n<p>Du kan se den <a href=\"https:\/\/github.com\/microsoft\/TypeScript\/pull\/51865\">oprindelige pull request<\/a> for at f\u00e5 flere oplysninger om, hvordan const-typeparameteren fungerer i TypeScript.<\/p>\n<h3>Forbedringer af Enums<\/h3>\n<p>Enums i TypeScript er en kraftfuld konstruktion, der giver udviklere mulighed for at definere et s\u00e6t navngivne konstanter. I TypeScript 5.0 er der blevet foretaget forbedringer af enums for at g\u00f8re dem endnu mere fleksible og nyttige.<\/p>\n<p>Hvis du f.eks. har f\u00f8lgende enum, der er overgivet til en funktion:<\/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>F\u00f8r indf\u00f8relsen af TypeScript 5.0 kunne du sende et forkert niveaunummer, og der ville ikke opst\u00e5 nogen fejl. Men med indf\u00f8relsen af TypeScript 5.0 vil det straks give en fejl.<\/p>\n<p>Desuden g\u00f8r den nye version alle enums til union-enums ved at oprette en unik type for hvert beregnet medlem. Denne forbedring g\u00f8r det muligt at indsn\u00e6vre alle enums og henvise til deres medlemmer som typer:<\/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>Forbedringer af ydeevnen i TypeScript 5.0<\/h3>\n<p>TypeScript 5.0 indeholder adskillige v\u00e6sentlige \u00e6ndringer i kodestruktur, datastrukturer og algoritmiske udvidelser. Dette har v\u00e6ret med til at forbedre hele TypeScript-oplevelsen, fra installation til udf\u00f8relse, hvilket har gjort den hurtigere og mere effektiv.<\/p>\n<p>For eksempel er forskellen mellem pakkest\u00f8rrelsen i TypeScript 5.0 og 4.9 ganske imponerende.<\/p>\n<p>TypeScript blev for nylig migreret fra namespaces til moduler, hvilket g\u00f8r det muligt at udnytte moderne buildv\u00e6rkt\u00f8jer, der kan udf\u00f8re optimeringer som scope hoisting. Desuden er der ved at fjerne noget for\u00e6ldet kode blevet barberet ca. 26,4 MB af TypeScript 4.9&#8217;s 63,8 MB pakkest\u00f8rrelse.<\/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-pakkest\u00f8rrelse\" width=\"1600\" height=\"959\"><figcaption class=\"wp-caption-text\">TypeScript-pakkest\u00f8rrelse<\/figcaption><\/figure>\n<p>Her er et par andre interessante gevinster i hastighed og st\u00f8rrelse mellem TypeScript 5.0 og 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>Tid eller st\u00f8rrelse i forhold til TS 4.9<\/strong><\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\">material-ui build tid<\/td>\n<td colspan=\"1\" rowspan=\"1\">90%<\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\">TypeScript-kompilerens opstartstid<\/td>\n<td colspan=\"1\" rowspan=\"1\">89%<\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\">Playwright-build tid<\/td>\n<td colspan=\"1\" rowspan=\"1\">88%<\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\">TypeScript Compiler-tid til selvopbygning<\/td>\n<td colspan=\"1\" rowspan=\"1\">87%<\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\">Byggetid for Outlook Web<\/td>\n<td colspan=\"1\" rowspan=\"1\">82%<\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\">VS Code build tid<\/td>\n<td colspan=\"1\" rowspan=\"1\">80%<\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\">typescript npm Pakke st\u00f8rrelse<\/td>\n<td colspan=\"1\" rowspan=\"1\">59%<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h3>Bundler-opl\u00f8sning for bedre modulopl\u00f8sning<\/h3>\n<p>N\u00e5r du skriver en import-anvisning i TypeScript, skal compileren vide, hvad importen henviser til. Det g\u00f8r den ved hj\u00e6lp af modulopl\u00f8sning. N\u00e5r du f.eks. skriver <code>import { a } from \"moduleA\"<\/code>, skal compileren kende definitionen af <code>a<\/code> i <code>moduleA<\/code> for at kontrollere brugen af den.<\/p>\n<p>I TypeScript 4.7 blev der tilf\u00f8jet to nye indstillinger for indstillingerne <code>--module<\/code> og <code>moduleResolution<\/code>: <code>node16<\/code> og <code>nodenext<\/code>.<\/p>\n<p>Form\u00e5let med disse indstillinger var at repr\u00e6sentere de n\u00f8jagtige opslagsregler for ECMAScript-moduler i <a href=\"https:\/\/kinsta.com\/blog\/node-js-vs-php\/\">Node.js<\/a> mere n\u00f8jagtigt. Denne tilstand har dog flere begr\u00e6nsninger, som ikke h\u00e5ndh\u00e6ves af andre v\u00e6rkt\u00f8jer.<\/p>\n<p>I et ECMAScript-modul i Node.js skal enhver relativ import f.eks. indeholde en filudvidelse, for at den fungerer korrekt:<\/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 har indf\u00f8rt en ny strategi kaldet &#8220;moduleResolution bundler&#8221;. Denne strategi kan implementeres ved at tilf\u00f8je f\u00f8lgende kode i afsnittet &#8220;compilerOptions&#8221; i din TypeScript-konfigurationsfil:<\/p>\n<pre><code class=\"language-json\">{\n    \"compilerOptions\": {\n        \"target\": \"esnext\",\n        \"moduleResolution\": \"bundler\"\n    }\n}<\/code><\/pre>\n<p>Denne nye strategi er velegnet til dem, der bruger moderne bundlere som Vite, esbuild, swc, Webpack, Parcel og andre, der bruger en hybrid opslagsstrategi.<\/p>\n<p>Du kan tjekke den <a href=\"https:\/\/github.com\/microsoft\/TypeScript\/pull\/51669\" target=\"_blank\" rel=\"noopener noreferrer\">oprindelige pull request og dens implementering<\/a> for at f\u00e5 flere oplysninger om, hvordan <code>moduleResolution<\/code> bundler fungerer i TypeScript.<\/p>\n<h2>For\u00e6ldelser<\/h2>\n<p>TypeScript 5.0 kommer med en del afskrivninger, herunder krav til k\u00f8rselstid, lib.d.ts-\u00e6ndringer og <a href=\"https:\/\/kinsta.com\/dk\/blog\/graphql-nodejs\/\">API-brydende<\/a> \u00e6ndringer.<\/p>\n<ol start=\"1\">\n<li><strong>Krav til k\u00f8rselstid:<\/strong> TypeScript er nu rettet mod ECMAScript 2018, og pakken fasts\u00e6tter en minimumsmotorforventning p\u00e5 12.20. Derfor skal brugere af Node.js have en minimumsversion p\u00e5 12.20 eller nyere for at kunne bruge TypeScript 5.0.<\/li>\n<li><strong>lib.d.ts \u00e6ndringer:<\/strong> Der er sket nogle \u00e6ndringer i den m\u00e5de, hvorp\u00e5 typer til DOM genereres, hvilket kan p\u00e5virke eksisterende kode. Is\u00e6r er visse egenskaber blevet konverteret fra taltyper til numeriske bogstavtyper, og egenskaber og metoder til h\u00e5ndtering af h\u00e6ndelsesh\u00e5ndtering for klip, kopiering og inds\u00e6ttelse er blevet flyttet p\u00e5 tv\u00e6rs af gr\u00e6nseflader.<\/li>\n<li><strong>\u00c6ndringer i API&#8217;et, der bryder med API&#8217;et:<\/strong> Nogle un\u00f8dvendige gr\u00e6nseflader er blevet fjernet, og der er foretaget nogle forbedringer af korrektheden. TypeScript 5.0 er ogs\u00e5 flyttet til moduler.<\/li>\n<\/ol>\n<p>TypeScript 5.0 har for\u00e6ldet visse indstillinger og deres tilsvarende v\u00e6rdier, herunder <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>, og <code>preserveValueImports<\/code>, samt prepend i projektreferencer.<\/p>\n<p>Disse konfigurationer vil fortsat v\u00e6re gyldige indtil TypeScript 5.5, men der vil blive udsendt en advarsel for at advare brugere, der stadig bruger dem.<\/p>\n\n<h2>Opsummering<\/h2>\n<p>I denne artikel har du l\u00e6rt nogle af de vigtigste funktioner og forbedringer, som TypeScript 5.0 bringer, f.eks. forbedringer af enums, bundler-opl\u00f8sning og const-typeparametre samt forbedringer af hastighed og st\u00f8rrelse.<\/p>\n<p>Hvis du overvejer TypeScript til dine n\u00e6ste projekter, kan du give <a href=\"https:\/\/sevalla.com\/application-hosting\/\">Kinsta Applickation Hosting en gratis pr\u00f8veperiode<\/a>.<\/p>\n<p><em>Nu er det din tur! Hvilke funktioner eller forbedringer finder du mest tiltalende i TypeScript 5.0? Er der nogle v\u00e6sentlige, som vi m\u00e5ske har overset? Lad os vide det i kommentarerne.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>TypeScript 5.0 blev officielt frigivet den 16. marts 2023 og er nu tilg\u00e6ngelig for alle. Denne version introducerer mange nye funktioner med det form\u00e5l at g\u00f8re &#8230;<\/p>\n","protected":false},"author":287,"featured_media":50124,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[706,705],"class_list":["post-50123","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-javascript-tutorials","topic-javascript-frameworks"],"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>Hvad er nyt i TypeScript 5.0: Deklaratorer, Const Type, Enums Improvement, hastighed - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Tag et dybt dyk ned i det nye TypeScript 5.0 og find ud af, hvad der er nyt, inklusive Declarators, Const Type, Enums Improvement og meget mere.\" \/>\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\/dk\/blog\/typescript-5-0\/\" \/>\n<meta property=\"og:locale\" content=\"da_DK\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Hvad er nyt i TypeScript 5.0: Deklaratorer, Const Type, Enums Improvement, hastighed og meget mere!\" \/>\n<meta property=\"og:description\" content=\"Tag et dybt dyk ned i det nye TypeScript 5.0 og find ud af, hvad der er nyt, inklusive Declarators, Const Type, Enums Improvement og meget mere.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/dk\/blog\/typescript-5-0\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Kinsta-Danmark-122855885298660\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-04-18T11:22:38+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-24T09:19:51+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/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=\"Tag et dybt dyk ned i det nye TypeScript 5.0 og find ud af, hvad der er nyt, inklusive Declarators, Const Type, Enums Improvement og meget mere.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2023\/04\/typescript-50.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@olawanle_joel\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_dk\" \/>\n<meta name=\"twitter:label1\" content=\"Skrevet af\" \/>\n\t<meta name=\"twitter:data1\" content=\"Joel Olawanle\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimeret l\u00e6setid\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutter\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/dk\/blog\/typescript-5-0\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/dk\/blog\/typescript-5-0\/\"},\"author\":{\"name\":\"Joel Olawanle\",\"@id\":\"https:\/\/kinsta.com\/dk\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\"},\"headline\":\"Hvad er nyt i TypeScript 5.0: Deklaratorer, Const Type, Enums Improvement, hastighed og meget mere!\",\"datePublished\":\"2023-04-18T11:22:38+00:00\",\"dateModified\":\"2023-08-24T09:19:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/dk\/blog\/typescript-5-0\/\"},\"wordCount\":1566,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/dk\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/dk\/blog\/typescript-5-0\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2023\/04\/typescript-50.jpg\",\"inLanguage\":\"da-DK\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/dk\/blog\/typescript-5-0\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/dk\/blog\/typescript-5-0\/\",\"url\":\"https:\/\/kinsta.com\/dk\/blog\/typescript-5-0\/\",\"name\":\"Hvad er nyt i TypeScript 5.0: Deklaratorer, Const Type, Enums Improvement, hastighed - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/dk\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/dk\/blog\/typescript-5-0\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/dk\/blog\/typescript-5-0\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2023\/04\/typescript-50.jpg\",\"datePublished\":\"2023-04-18T11:22:38+00:00\",\"dateModified\":\"2023-08-24T09:19:51+00:00\",\"description\":\"Tag et dybt dyk ned i det nye TypeScript 5.0 og find ud af, hvad der er nyt, inklusive Declarators, Const Type, Enums Improvement og meget mere.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/dk\/blog\/typescript-5-0\/#breadcrumb\"},\"inLanguage\":\"da-DK\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/dk\/blog\/typescript-5-0\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"da-DK\",\"@id\":\"https:\/\/kinsta.com\/dk\/blog\/typescript-5-0\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2023\/04\/typescript-50.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2023\/04\/typescript-50.jpg\",\"width\":3042,\"height\":1521,\"caption\":\"Hvad er nyt i TypeScript 5.0: Deklaratorer, Const Type, forbedring af Enums, hastighed\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/dk\/blog\/typescript-5-0\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/dk\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JavaScript tutorials\",\"item\":\"https:\/\/kinsta.com\/dk\/emner\/javascript-tutorials\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Hvad er nyt i TypeScript 5.0: Deklaratorer, Const Type, Enums Improvement, hastighed og meget mere!\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/dk\/#website\",\"url\":\"https:\/\/kinsta.com\/dk\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Hurtig, sikker, premium hostingl\u00f8sninger\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/dk\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/dk\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"da-DK\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/dk\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/dk\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"da-DK\",\"@id\":\"https:\/\/kinsta.com\/dk\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/dk\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Kinsta-Danmark-122855885298660\/\",\"https:\/\/x.com\/kinsta_dk\",\"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\/dk\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\",\"name\":\"Joel Olawanle\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"da-DK\",\"@id\":\"https:\/\/kinsta.com\/dk\/#\/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\/dk\/blog\/author\/joelolawanle\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Hvad er nyt i TypeScript 5.0: Deklaratorer, Const Type, Enums Improvement, hastighed - Kinsta\u00ae","description":"Tag et dybt dyk ned i det nye TypeScript 5.0 og find ud af, hvad der er nyt, inklusive Declarators, Const Type, Enums Improvement og meget mere.","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\/dk\/blog\/typescript-5-0\/","og_locale":"da_DK","og_type":"article","og_title":"Hvad er nyt i TypeScript 5.0: Deklaratorer, Const Type, Enums Improvement, hastighed og meget mere!","og_description":"Tag et dybt dyk ned i det nye TypeScript 5.0 og find ud af, hvad der er nyt, inklusive Declarators, Const Type, Enums Improvement og meget mere.","og_url":"https:\/\/kinsta.com\/dk\/blog\/typescript-5-0\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/Kinsta-Danmark-122855885298660\/","article_published_time":"2023-04-18T11:22:38+00:00","article_modified_time":"2023-08-24T09:19:51+00:00","og_image":[{"width":3042,"height":1521,"url":"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2023\/04\/typescript-50.jpg","type":"image\/jpeg"}],"author":"Joel Olawanle","twitter_card":"summary_large_image","twitter_description":"Tag et dybt dyk ned i det nye TypeScript 5.0 og find ud af, hvad der er nyt, inklusive Declarators, Const Type, Enums Improvement og meget mere.","twitter_image":"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2023\/04\/typescript-50.jpg","twitter_creator":"@olawanle_joel","twitter_site":"@kinsta_dk","twitter_misc":{"Skrevet af":"Joel Olawanle","Estimeret l\u00e6setid":"10 minutter"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/dk\/blog\/typescript-5-0\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/dk\/blog\/typescript-5-0\/"},"author":{"name":"Joel Olawanle","@id":"https:\/\/kinsta.com\/dk\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07"},"headline":"Hvad er nyt i TypeScript 5.0: Deklaratorer, Const Type, Enums Improvement, hastighed og meget mere!","datePublished":"2023-04-18T11:22:38+00:00","dateModified":"2023-08-24T09:19:51+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/dk\/blog\/typescript-5-0\/"},"wordCount":1566,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/dk\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/dk\/blog\/typescript-5-0\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2023\/04\/typescript-50.jpg","inLanguage":"da-DK","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/dk\/blog\/typescript-5-0\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/dk\/blog\/typescript-5-0\/","url":"https:\/\/kinsta.com\/dk\/blog\/typescript-5-0\/","name":"Hvad er nyt i TypeScript 5.0: Deklaratorer, Const Type, Enums Improvement, hastighed - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/dk\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/dk\/blog\/typescript-5-0\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/dk\/blog\/typescript-5-0\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2023\/04\/typescript-50.jpg","datePublished":"2023-04-18T11:22:38+00:00","dateModified":"2023-08-24T09:19:51+00:00","description":"Tag et dybt dyk ned i det nye TypeScript 5.0 og find ud af, hvad der er nyt, inklusive Declarators, Const Type, Enums Improvement og meget mere.","breadcrumb":{"@id":"https:\/\/kinsta.com\/dk\/blog\/typescript-5-0\/#breadcrumb"},"inLanguage":"da-DK","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/dk\/blog\/typescript-5-0\/"]}]},{"@type":"ImageObject","inLanguage":"da-DK","@id":"https:\/\/kinsta.com\/dk\/blog\/typescript-5-0\/#primaryimage","url":"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2023\/04\/typescript-50.jpg","contentUrl":"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2023\/04\/typescript-50.jpg","width":3042,"height":1521,"caption":"Hvad er nyt i TypeScript 5.0: Deklaratorer, Const Type, forbedring af Enums, hastighed"},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/dk\/blog\/typescript-5-0\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/dk\/"},{"@type":"ListItem","position":2,"name":"JavaScript tutorials","item":"https:\/\/kinsta.com\/dk\/emner\/javascript-tutorials\/"},{"@type":"ListItem","position":3,"name":"Hvad er nyt i TypeScript 5.0: Deklaratorer, Const Type, Enums Improvement, hastighed og meget mere!"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/dk\/#website","url":"https:\/\/kinsta.com\/dk\/","name":"Kinsta\u00ae","description":"Hurtig, sikker, premium hostingl\u00f8sninger","publisher":{"@id":"https:\/\/kinsta.com\/dk\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/dk\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"da-DK"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/dk\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/dk\/","logo":{"@type":"ImageObject","inLanguage":"da-DK","@id":"https:\/\/kinsta.com\/dk\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/dk\/wp-content\/uploads\/sites\/12\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/dk\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Kinsta-Danmark-122855885298660\/","https:\/\/x.com\/kinsta_dk","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\/dk\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07","name":"Joel Olawanle","image":{"@type":"ImageObject","inLanguage":"da-DK","@id":"https:\/\/kinsta.com\/dk\/#\/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\/dk\/blog\/author\/joelolawanle\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/dk\/wp-json\/wp\/v2\/posts\/50123","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/dk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/dk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/dk\/wp-json\/wp\/v2\/users\/287"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/dk\/wp-json\/wp\/v2\/comments?post=50123"}],"version-history":[{"count":7,"href":"https:\/\/kinsta.com\/dk\/wp-json\/wp\/v2\/posts\/50123\/revisions"}],"predecessor-version":[{"id":50481,"href":"https:\/\/kinsta.com\/dk\/wp-json\/wp\/v2\/posts\/50123\/revisions\/50481"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/dk\/wp-json\/kinsta\/v1\/posts\/50123\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/dk\/wp-json\/kinsta\/v1\/posts\/50123\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/dk\/wp-json\/kinsta\/v1\/posts\/50123\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/dk\/wp-json\/kinsta\/v1\/posts\/50123\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/dk\/wp-json\/kinsta\/v1\/posts\/50123\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/dk\/wp-json\/kinsta\/v1\/posts\/50123\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/dk\/wp-json\/kinsta\/v1\/posts\/50123\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/dk\/wp-json\/kinsta\/v1\/posts\/50123\/translations\/es"},{"embeddable":true,"hreflang":"sv","title":"Swedish","href":"https:\/\/kinsta.com\/dk\/wp-json\/kinsta\/v1\/posts\/50123\/translations\/se"},{"embeddable":true,"hreflang":"da","title":"Danish","href":"https:\/\/kinsta.com\/dk\/wp-json\/kinsta\/v1\/posts\/50123\/translations\/dk"},{"href":"https:\/\/kinsta.com\/dk\/wp-json\/kinsta\/v1\/posts\/50123\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/dk\/wp-json\/wp\/v2\/media\/50124"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/dk\/wp-json\/wp\/v2\/media?parent=50123"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/dk\/wp-json\/wp\/v2\/tags?post=50123"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/dk\/wp-json\/wp\/v2\/topic?post=50123"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}