{"id":52199,"date":"2023-04-18T11:29:33","date_gmt":"2023-04-18T11:29:33","guid":{"rendered":"https:\/\/kinsta.com\/se\/?p=52199&#038;preview=true&#038;preview_id=52199"},"modified":"2023-09-18T10:21:16","modified_gmt":"2023-09-18T10:21:16","slug":"typescript-5-0","status":"publish","type":"post","link":"https:\/\/kinsta.com\/se\/blog\/typescript-5-0\/","title":{"rendered":"Nytt i TypeScript 5.0: Deklaratorer, Const-typer, hastighet och mycket mer!"},"content":{"rendered":"<p>TypeScript 5.0 sl\u00e4pptes officiellt den 16 mars \u00e5r 2023 och \u00e4r nu tillg\u00e4ngligt f\u00f6r alla. Den h\u00e4r versionen introducerar m\u00e5nga nya funktioner med m\u00e5let att g\u00f6ra TypeScript mindre, enklare och snabbare.<\/p>\n<p>Den nya versionen moderniserar exempelvis dekoratorer f\u00f6r klassanpassning. Som ett resultat s\u00e5 blir det m\u00f6jligt att anpassa klasser och deras medlemmar p\u00e5 ett \u00e5teranv\u00e4ndbart s\u00e4tt. <a href=\"https:\/\/kinsta.com\/se\/blog\/typer-av-utvecklare\/\">Utvecklare<\/a> kan nu l\u00e4gga till en const-modifier till en deklaration av en typparameter. Detta g\u00f6r att att const-liknande inferenser blir standard. Den nya versionen inkluderar dessutom f\u00f6rb\u00e4ttrade enums. Som ett resultat s\u00e5 f\u00f6renklas kodstrukturen och TypeScript-upplevelsen snabbas upp.<\/p>\n<p>I den h\u00e4r artikeln s\u00e5 kommer du att utforska de f\u00f6r\u00e4ndringar som inf\u00f6rdes i TypeScript 5.0 och f\u00e5 en djupg\u00e5ende titt p\u00e5 dess nya funktioner och m\u00f6jligheter.<\/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 ig\u00e5ng med TypeScript 5.0<\/h2>\n<p>TypeScript \u00e4r en officiell kompilator som du kan installera i ditt projekt med hj\u00e4lp av <a href=\"https:\/\/kinsta.com\/blog\/what-is-npm\/\">npm<\/a>. Om du vill b\u00f6rja anv\u00e4nda TypeScript 5.0 i ditt projekt kan du k\u00f6ra f\u00f6ljande kommando i projektkatalogen:<\/p>\n<pre><code class=\"language-bash\">npm install -D typescript<\/code><\/pre>\n<p>Detta kommer sedan att installera kompilatorn i katalogen <strong>node_modules<\/strong>, som du nu kan k\u00f6ra med kommandot <code>npx tsc<\/code>.<\/p>\n<p>Du hittar dessutom instruktioner om hur du anv\u00e4nder den nyare versionen av 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 den h\u00e4r dokumentationen<\/a>.<\/p>\n\n<h2>Vad \u00e4r nytt i TypeScript 5.0?<\/h2>\n<p>I den h\u00e4r artikeln s\u00e5 ska vi utforska 5 viktiga uppdateringar som har inf\u00f6rts i TypeScript. Dessa funktioner omfattar exempelvis f\u00f6ljande:<\/p>\n<div><\/div><kinsta-auto-toc list-style=\"decimal\" selector=\"h3\" count-number=\"-1\" sub-toc=\"true\"><\/kinsta-auto-toc>\n<h3>Moderniserade dekorat\u00f6rer<\/h3>\n<p>Dekorat\u00f6rer har funnits i TypeScript ett tag under en experimentell flagga. Den nya versionen g\u00f6r dem dock uppdaterade med ECMAScript-f\u00f6rslaget, som nu befinner sig i <a href=\"https:\/\/github.com\/tc39\/proposal-decorators\" target=\"_blank\" rel=\"noopener noreferrer\">steg 3<\/a>. Som ett resultat s\u00e5 kan det nu l\u00e4ggas till i TypeScript.<\/p>\n<p>Dekorat\u00f6rer \u00e4r ett s\u00e4tt att anpassa beteendet hos klasser och deras medlemmar p\u00e5 ett \u00e5teranv\u00e4ndbart s\u00e4tt. Om du exempelvis har en klass som har tv\u00e5 metoder, <code>greet<\/code> och <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 verkliga anv\u00e4ndningsomr\u00e5den s\u00e5 b\u00f6r den h\u00e4r klassen ha mer komplicerade metoder som hanterar en viss asynkron logik och har sidoeffekter. D\u00e4r kan du exempelvis l\u00e4gga in n\u00e5gra <code>console.log<\/code>-anrop f\u00f6r att hj\u00e4lpa till att fels\u00f6ka metoderna.<\/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>Detta \u00e4r ett ofta f\u00f6rekommande m\u00f6nster och det skulle vara praktiskt att ha en l\u00f6sning som kan till\u00e4mpas p\u00e5 varje metod.<\/p>\n<p>Det \u00e4r h\u00e4r som dekorat\u00f6rer kommer in i bilden. Vi kan definiera en funktion med namnet <code>debugMethod<\/code> som ser ut p\u00e5 f\u00f6ljande s\u00e4tt:<\/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 ovan s\u00e5 tar <code>debugMethod<\/code> den ursprungliga metoden (<code>originalMethod<\/code>) och returnerar sedan en funktion som g\u00f6r f\u00f6ljande:<\/p>\n<ol start=\"1\">\n<li>Loggar meddelandet &#8221;Method Execution Starts&#8221;.<\/li>\n<li>\u00d6verl\u00e4mnar den ursprungliga metoden och alla dess argument (inklusive detta).<\/li>\n<li>Loggar meddelandet &#8221;Method Execution Ends&#8221;.<\/li>\n<li>\u00c5terger det som den ursprungliga metoden returnerade.<\/li>\n<\/ol>\n<p>Genom att anv\u00e4nda dekorat\u00f6rer s\u00e5 kan du exempelvis till\u00e4mpa <code>debugMethod<\/code> p\u00e5 dina metoder enligt koden nedan:<\/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>Detta kommer sedan att ge f\u00f6ljande resultat:<\/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>N\u00e4r man definierar dekorat\u00f6r-funktionen (<code>debugMethod<\/code>) s\u00e5 skickas en andra parameter som heter <code>context<\/code> (det \u00e4r kontext-objektet &#8211; och inneh\u00e5ller en del anv\u00e4ndbar information om hur den dekorerade metoden deklarerades och \u00e4ven metodens namn). Du kan uppdatera din <code>debugMethod<\/code> f\u00f6r att f\u00e5 metodnamnet fr\u00e5n <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\u00e4r du k\u00f6r din kod s\u00e5 kommer utdata nu att inneh\u00e5lla namnet p\u00e5 varje metod som \u00e4r dekorerad med dekorat\u00f6ren\u00a0<code>debugMethod<\/code>:<\/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>Det finns mer att g\u00f6ra med dekorat\u00f6rer. Kolla g\u00e4rna in\u00a0<a href=\"https:\/\/github.com\/microsoft\/TypeScript\/pull\/50820\">ursprunglig pull request<\/a> f\u00f6r mer information om hur man anv\u00e4nder dekorat\u00f6rer i TypeScript.<\/p>\n<h3>Introduktion av const Type Parameters<\/h3>\n<p>Detta \u00e4r en annan stor utg\u00e5va som ger dig ett nytt verktyg med generics f\u00f6r att f\u00f6rb\u00e4ttra den inferens som du f\u00e5r n\u00e4r du anropar funktioner. N\u00e4r du deklarerar v\u00e4rden med <code>const<\/code>, s\u00e5 drar TypeScript standardm\u00e4ssigt slutsatsen om typen och inte om dess bokstavliga v\u00e4rden:<\/p>\n<pre><code class=\"language-typescript\">\/\/ Inferred type: string[]\nconst names = ['John', 'Jake', 'Jack'];<\/code><\/pre>\n<p>Hittills s\u00e5 har du varit tvungen att anv\u00e4nda const-f\u00f6rs\u00e4kran genom att l\u00e4gga till &#8221;as const&#8221;, f\u00f6r att f\u00e5 den \u00f6nskade slutsatsen:<\/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\u00e4r du anropar funktioner s\u00e5 \u00e4r det likadant. I koden nedan s\u00e5 \u00e4r den h\u00e4rledda typen\u00a0<strong>l\u00e4nder<\/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 kanske vill ha en mer specifik typ? D\u00e5 kan du l\u00e4gga till <code>as const<\/code>-f\u00f6rs\u00e4kran:<\/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>Detta kan vara sv\u00e5rt att komma ih\u00e5g och genomf\u00f6ra. TypeScript 5.0 introducerar dock en ny funktion d\u00e4r du kan l\u00e4gga till en const-modifier till en typparametardeklaration. Som ett resultat s\u00e5 kommer en const-liknande inferens att implementeras 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>Genom att anv\u00e4nda <code>const<\/code>-typparametrar s\u00e5 kan utvecklare uttrycka sin avsikt tydligare i sin kod. Om en variabel \u00e4r avsedd att vara konstant och aldrig \u00e4ndras, s\u00e4kerst\u00e4ller anv\u00e4ndningen av en <code>const<\/code>-typparameter exempelvis att den aldrig kan \u00e4ndras av misstag.<\/p>\n<p>Du kan l\u00e4sa\u00a0<a href=\"https:\/\/github.com\/microsoft\/TypeScript\/pull\/51865\">ursprunglig pull request<\/a> f\u00f6r mer information om hur const-typparametern fungerar i TypeScript.<\/p>\n<h3>F\u00f6rb\u00e4ttringar av enums<\/h3>\n<p>Enums i TypeScript \u00e4r en kraftfull konstruktion som exempelvis g\u00f6r det m\u00f6jligt f\u00f6r utvecklare att definiera en upps\u00e4ttning namngivna konstanter. I TypeScript 5.0 s\u00e5 har enums f\u00f6rb\u00e4ttrats f\u00f6r att bli \u00e4nnu mer flexibla och anv\u00e4ndbara.<\/p>\n<p>Detta g\u00e4ller om du exempelvis har f\u00f6ljande enum som skickas in i 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>Innan TypeScript 5.0 inf\u00f6rdes s\u00e5 kunde du l\u00e4mna \u00f6ver fel niv\u00e5nummer utan att n\u00e5got fel uppstod. Efter inf\u00f6randet av TypeScript 5.0 s\u00e5 kommer det d\u00e4remot omedelbart att uppst\u00e5 ett fel.<\/p>\n<p>Dessutom s\u00e5 g\u00f6r den nya versionen alla enums till union enums genom att skapa en unik typ f\u00f6r varje ber\u00e4knad medlem. Som ett resultat av denna f\u00f6rb\u00e4ttring s\u00e5 blir det m\u00f6jligt att begr\u00e4nsa alla enums och referera deras medlemmar 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>Prestandaf\u00f6rb\u00e4ttringar i TypeScript 5.0<\/h3>\n<p>TypeScript 5.0 inkluderar m\u00e5nga betydande f\u00f6r\u00e4ndringar i kodstruktur, datastrukturer och algoritmiska utvidgningar. Som ett resultat s\u00e5 f\u00f6rb\u00e4ttras hela TypeScript-upplevelsen, fr\u00e5n installation till exekvering, vilket g\u00f6r den snabbare och effektivare.<\/p>\n<p>Skillnaden mellan paketstorleken f\u00f6r TypeScript 5.0 och 4.9 \u00e4r exempelvis ganska imponerande.<\/p>\n<p>TypeScript migrerades nyligen fr\u00e5n namnomr\u00e5den till moduler. Det blir d\u00e4rf\u00f6r m\u00f6jligt att utnyttja moderna byggverktyg som kan utf\u00f6ra optimeringar som exempelvis scope hoisting. Genom att ta bort en del f\u00f6r\u00e5ldrad kod s\u00e5 har man dessutom sparat cirka 26,4 MB fr\u00e5n TypeScript 4.9\u2019s paketstorlek p\u00e5 63,8 MB.<\/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-paketets storlek\" width=\"1600\" height=\"959\"><figcaption class=\"wp-caption-text\">TypeScript-paketets storlek<\/figcaption><\/figure>\n<p>H\u00e4r \u00e4r n\u00e5gra fler intressanta vinster i hastighet och storlek mellan TypeScript 5.0 och 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 storlek i f\u00f6rh\u00e5llande till TS 4.9<\/strong><\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\">Tid f\u00f6r att bygga material-ui<\/td>\n<td colspan=\"1\" rowspan=\"1\">90%<\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\">Starttid f\u00f6r TypeScript-kompilatorn<\/td>\n<td colspan=\"1\" rowspan=\"1\">89%<\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\">Byggtid f\u00f6r Playwright<\/td>\n<td colspan=\"1\" rowspan=\"1\">88%<\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\">Tid f\u00f6r TypeScript-kompilatorn f\u00f6r egenkompilering<\/td>\n<td colspan=\"1\" rowspan=\"1\">87%<\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\">Byggtid f\u00f6r Outlook Web<\/td>\n<td colspan=\"1\" rowspan=\"1\">82%<\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\">Byggtid f\u00f6r VS Code<\/td>\n<td colspan=\"1\" rowspan=\"1\">80%<\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\">typescript npm Paketstorlek<\/td>\n<td colspan=\"1\" rowspan=\"1\">59%<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h3>Bundler-uppl\u00f6sning f\u00f6r b\u00e4ttre moduluppl\u00f6sning<\/h3>\n<p>N\u00e4r du skriver ett importmeddelande i TypeScript s\u00e5 m\u00e5ste kompilatorn veta vad importen avser. Den g\u00f6r detta med hj\u00e4lp av moduluppl\u00f6sning. N\u00e4r du exempelvis skriver <code>import { a } from \"moduleA\"<\/code>\u00a0s\u00e5 m\u00e5ste kompilatorn k\u00e4nna till definitionen av <code>a<\/code> i <code>moduleA<\/code> f\u00f6r att kunna kontrollera hur den anv\u00e4nds.<\/p>\n<p>I TypeScript 4.7 s\u00e5 lades tv\u00e5 nya alternativ till f\u00f6r inst\u00e4llningarna <code>--module<\/code> och <code>moduleResolution<\/code>: <code>node16<\/code> och <code>nodenext<\/code>.<\/p>\n<p>Syftet med dessa alternativ var att mer exakt representera de exakta uppslagsreglerna f\u00f6r ECMAScript-moduler i <a href=\"https:\/\/kinsta.com\/blog\/node-js-vs-php\/\">Node.js<\/a>. Det h\u00e4r l\u00e4get har dock flera begr\u00e4nsningar som inte till\u00e4mpas av andra verktyg.<\/p>\n<p>I en ECMAScript-modul i Node.js s\u00e5 m\u00e5ste exempelvis varje relativ import inkludera ett filtill\u00e4gg f\u00f6r att fungera 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 inf\u00f6rt en ny strategi som kallas &#8221;moduleResolution bundler&#8221; Denna strategi kan exempelvis implementeras genom att man l\u00e4gger till f\u00f6ljande kod i avsnittet &#8221;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>Strategin \u00e4r l\u00e4mplig f\u00f6r dem som anv\u00e4nder moderna bundles som Vite, esbuild, swc, Webpack, Parcel och andra som anv\u00e4nder en hybrid lookup-strategi.<\/p>\n<p>Du kan kontrollera\u00a0<a href=\"https:\/\/github.com\/microsoft\/TypeScript\/pull\/51669\" target=\"_blank\" rel=\"noopener noreferrer\">ursprunglig pull request och dess implementering<\/a> f\u00f6r mer information om hur <code>moduleResolution<\/code>-bundler fungerar i TypeScript.<\/p>\n<h2>F\u00f6r\u00e5ldrade funktioner<\/h2>\n<p>TypeScript 5.0 inkluderar en del avskrivningar, inklusive k\u00f6rtidskrav, lib.d.ts-\u00e4ndringar och <a href=\"https:\/\/kinsta.com\/se\/blog\/graphql-nodejs\/\">API-brotts\u00e4ndringar<\/a>.<\/p>\n<ol start=\"1\">\n<li><strong>Krav p\u00e5 k\u00f6rtid:<\/strong> TypeScript \u00e4r nu inriktat p\u00e5 ECMAScript 2018, och paketet anger ett l\u00e4gsta motorkrav p\u00e5 12.20. D\u00e4rf\u00f6r s\u00e5 b\u00f6r anv\u00e4ndare av Node.js ha en minsta version av 12.20 eller senare f\u00f6r att kunna anv\u00e4nda TypeScript 5.0.<\/li>\n<li><strong>lib.d.ts \u00c4ndringar:<\/strong> Det har genomf\u00f6rts vissa \u00e4ndringar i hur typer f\u00f6r DOM genereras. Som ett resultat s\u00e5 kan befintlig kod p\u00e5verkas. I synnerhet s\u00e5 har vissa egenskaper konverterats fr\u00e5n antal till numeriska bokstavstyper. Egenskaper och metoder f\u00f6r hantering av h\u00e4ndelser f\u00f6r klippa, kopiera och klistra in har dessutom flyttats \u00f6ver gr\u00e4nssnitt.<\/li>\n<li><strong>API-brotts\u00e4ndringar:<\/strong> Vissa on\u00f6diga gr\u00e4nssnitt har tagits bort och vissa korrekthetsf\u00f6rb\u00e4ttringar har gjorts. TypeScript 5.0 har dessutom flyttats till moduler.<\/li>\n<\/ol>\n<p>Det har avskrivit vissa inst\u00e4llningar och deras motsvarande v\u00e4rden, inklusive <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> och <code>preserveValueImports<\/code>, samt prepend i projektreferenser.<\/p>\n<p>\u00c4ven om dessa konfigurationer kommer att vara giltiga fram till TypeScript 5.5 s\u00e5 kommer en varning att utf\u00e4rdas f\u00f6r att uppm\u00e4rksamma anv\u00e4ndare som fortfarande anv\u00e4nder dem.<\/p>\n\n<h2>Sammanfattning<\/h2>\n<p>I den h\u00e4r artikeln s\u00e5 har du l\u00e4rt dig n\u00e5gra av de viktigaste funktionerna och f\u00f6rb\u00e4ttringarna som TypeScript 5.0 medf\u00f6r. Detta inkluderar exempelvis f\u00f6rb\u00e4ttringar av enums, bundler-uppl\u00f6sning och const-typparametrar, tillsammans med f\u00f6rb\u00e4ttringar av hastighet och storlek.<\/p>\n<p>Om du funderar p\u00e5 TypeScript f\u00f6r dina n\u00e4sta projekt s\u00e5 kan du ge <a href=\"https:\/\/sevalla.com\/application-hosting\/\">Kinsta\u2019s Applikationshosting ett kostnadsfritt f\u00f6rs\u00f6k<\/a>.<\/p>\n<p><em>Nu \u00e4r det din tur! Vilka funktioner eller f\u00f6rb\u00e4ttringar tycker du \u00e4r mest tilltalande i TypeScript 5.0? Finns det n\u00e5gra viktiga saker som vi kanske har f\u00f6rbisett? L\u00e5t oss veta i kommentarerna.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>TypeScript 5.0 sl\u00e4pptes officiellt den 16 mars \u00e5r 2023 och \u00e4r nu tillg\u00e4ngligt f\u00f6r alla. Den h\u00e4r versionen introducerar m\u00e5nga nya funktioner med m\u00e5let att g\u00f6ra &#8230;<\/p>\n","protected":false},"author":287,"featured_media":52200,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[783,784],"class_list":["post-52199","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-javascript-ramverk","topic-javascript-sjalvstudier"],"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>Nytt i TypeScript 5.0: Deklaratorer, Const-typer, hastighet, osv - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Djupdyk i nya TypeScript 5.0 och se vad som \u00e4r nytt, inklusive Deklaratorer, Const-typer, Enums-f\u00f6rb\u00e4ttringar och mycket mer.\" \/>\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\/se\/blog\/typescript-5-0\/\" \/>\n<meta property=\"og:locale\" content=\"sv_SE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Nytt i TypeScript 5.0: Deklaratorer, Const-typer, hastighet och mycket mer!\" \/>\n<meta property=\"og:description\" content=\"Djupdyk i nya TypeScript 5.0 och se vad som \u00e4r nytt, inklusive Deklaratorer, Const-typer, Enums-f\u00f6rb\u00e4ttringar och mycket mer.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/se\/blog\/typescript-5-0\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstasweden\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-04-18T11:29:33+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-09-18T10:21:16+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/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=\"Djupdyk i nya TypeScript 5.0 och se vad som \u00e4r nytt, inklusive Deklaratorer, Const-typer, Enums-f\u00f6rb\u00e4ttringar och mycket mer.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/04\/typescript-50.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@olawanle_joel\" \/>\n<meta name=\"twitter:site\" content=\"@kinsta_se\" \/>\n<meta name=\"twitter:label1\" content=\"Skriven av\" \/>\n\t<meta name=\"twitter:data1\" content=\"Joel Olawanle\" \/>\n\t<meta name=\"twitter:label2\" content=\"Ber\u00e4knad l\u00e4stid\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minuter\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/se\/blog\/typescript-5-0\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/se\/blog\/typescript-5-0\/\"},\"author\":{\"name\":\"Joel Olawanle\",\"@id\":\"https:\/\/kinsta.com\/se\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\"},\"headline\":\"Nytt i TypeScript 5.0: Deklaratorer, Const-typer, hastighet och mycket mer!\",\"datePublished\":\"2023-04-18T11:29:33+00:00\",\"dateModified\":\"2023-09-18T10:21:16+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/se\/blog\/typescript-5-0\/\"},\"wordCount\":1705,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/se\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/se\/blog\/typescript-5-0\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/04\/typescript-50.jpg\",\"inLanguage\":\"sv-SE\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/se\/blog\/typescript-5-0\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/se\/blog\/typescript-5-0\/\",\"url\":\"https:\/\/kinsta.com\/se\/blog\/typescript-5-0\/\",\"name\":\"Nytt i TypeScript 5.0: Deklaratorer, Const-typer, hastighet, osv - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/se\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/se\/blog\/typescript-5-0\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/se\/blog\/typescript-5-0\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/04\/typescript-50.jpg\",\"datePublished\":\"2023-04-18T11:29:33+00:00\",\"dateModified\":\"2023-09-18T10:21:16+00:00\",\"description\":\"Djupdyk i nya TypeScript 5.0 och se vad som \u00e4r nytt, inklusive Deklaratorer, Const-typer, Enums-f\u00f6rb\u00e4ttringar och mycket mer.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/se\/blog\/typescript-5-0\/#breadcrumb\"},\"inLanguage\":\"sv-SE\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/se\/blog\/typescript-5-0\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"sv-SE\",\"@id\":\"https:\/\/kinsta.com\/se\/blog\/typescript-5-0\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/04\/typescript-50.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/04\/typescript-50.jpg\",\"width\":3042,\"height\":1521,\"caption\":\"Nytt i TypeScript 5.0: Deklaratorer, Const-typer, hastighet, osv\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/se\/blog\/typescript-5-0\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/se\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JavaScript-ramverk\",\"item\":\"https:\/\/kinsta.com\/se\/topics\/javascript-ramverk\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Nytt i TypeScript 5.0: Deklaratorer, Const-typer, hastighet och mycket mer!\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/se\/#website\",\"url\":\"https:\/\/kinsta.com\/se\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Snabba, s\u00e4kra, premium hosting-l\u00f6sningar\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/se\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/se\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"sv-SE\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/se\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/se\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"sv-SE\",\"@id\":\"https:\/\/kinsta.com\/se\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/se\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstasweden\/\",\"https:\/\/x.com\/kinsta_se\",\"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\/se\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\",\"name\":\"Joel Olawanle\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"sv-SE\",\"@id\":\"https:\/\/kinsta.com\/se\/#\/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\/se\/blog\/author\/joelolawanle\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Nytt i TypeScript 5.0: Deklaratorer, Const-typer, hastighet, osv - Kinsta\u00ae","description":"Djupdyk i nya TypeScript 5.0 och se vad som \u00e4r nytt, inklusive Deklaratorer, Const-typer, Enums-f\u00f6rb\u00e4ttringar och mycket mer.","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\/se\/blog\/typescript-5-0\/","og_locale":"sv_SE","og_type":"article","og_title":"Nytt i TypeScript 5.0: Deklaratorer, Const-typer, hastighet och mycket mer!","og_description":"Djupdyk i nya TypeScript 5.0 och se vad som \u00e4r nytt, inklusive Deklaratorer, Const-typer, Enums-f\u00f6rb\u00e4ttringar och mycket mer.","og_url":"https:\/\/kinsta.com\/se\/blog\/typescript-5-0\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstasweden\/","article_published_time":"2023-04-18T11:29:33+00:00","article_modified_time":"2023-09-18T10:21:16+00:00","og_image":[{"width":3042,"height":1521,"url":"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/04\/typescript-50.jpg","type":"image\/jpeg"}],"author":"Joel Olawanle","twitter_card":"summary_large_image","twitter_description":"Djupdyk i nya TypeScript 5.0 och se vad som \u00e4r nytt, inklusive Deklaratorer, Const-typer, Enums-f\u00f6rb\u00e4ttringar och mycket mer.","twitter_image":"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/04\/typescript-50.jpg","twitter_creator":"@olawanle_joel","twitter_site":"@kinsta_se","twitter_misc":{"Skriven av":"Joel Olawanle","Ber\u00e4knad l\u00e4stid":"11 minuter"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/se\/blog\/typescript-5-0\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/se\/blog\/typescript-5-0\/"},"author":{"name":"Joel Olawanle","@id":"https:\/\/kinsta.com\/se\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07"},"headline":"Nytt i TypeScript 5.0: Deklaratorer, Const-typer, hastighet och mycket mer!","datePublished":"2023-04-18T11:29:33+00:00","dateModified":"2023-09-18T10:21:16+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/se\/blog\/typescript-5-0\/"},"wordCount":1705,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/se\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/se\/blog\/typescript-5-0\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/04\/typescript-50.jpg","inLanguage":"sv-SE","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/se\/blog\/typescript-5-0\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/se\/blog\/typescript-5-0\/","url":"https:\/\/kinsta.com\/se\/blog\/typescript-5-0\/","name":"Nytt i TypeScript 5.0: Deklaratorer, Const-typer, hastighet, osv - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/se\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/se\/blog\/typescript-5-0\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/se\/blog\/typescript-5-0\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/04\/typescript-50.jpg","datePublished":"2023-04-18T11:29:33+00:00","dateModified":"2023-09-18T10:21:16+00:00","description":"Djupdyk i nya TypeScript 5.0 och se vad som \u00e4r nytt, inklusive Deklaratorer, Const-typer, Enums-f\u00f6rb\u00e4ttringar och mycket mer.","breadcrumb":{"@id":"https:\/\/kinsta.com\/se\/blog\/typescript-5-0\/#breadcrumb"},"inLanguage":"sv-SE","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/se\/blog\/typescript-5-0\/"]}]},{"@type":"ImageObject","inLanguage":"sv-SE","@id":"https:\/\/kinsta.com\/se\/blog\/typescript-5-0\/#primaryimage","url":"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/04\/typescript-50.jpg","contentUrl":"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/04\/typescript-50.jpg","width":3042,"height":1521,"caption":"Nytt i TypeScript 5.0: Deklaratorer, Const-typer, hastighet, osv"},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/se\/blog\/typescript-5-0\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/se\/"},{"@type":"ListItem","position":2,"name":"JavaScript-ramverk","item":"https:\/\/kinsta.com\/se\/topics\/javascript-ramverk\/"},{"@type":"ListItem","position":3,"name":"Nytt i TypeScript 5.0: Deklaratorer, Const-typer, hastighet och mycket mer!"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/se\/#website","url":"https:\/\/kinsta.com\/se\/","name":"Kinsta\u00ae","description":"Snabba, s\u00e4kra, premium hosting-l\u00f6sningar","publisher":{"@id":"https:\/\/kinsta.com\/se\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/se\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"sv-SE"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/se\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/se\/","logo":{"@type":"ImageObject","inLanguage":"sv-SE","@id":"https:\/\/kinsta.com\/se\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/se\/wp-content\/uploads\/sites\/9\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/se\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstasweden\/","https:\/\/x.com\/kinsta_se","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\/se\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07","name":"Joel Olawanle","image":{"@type":"ImageObject","inLanguage":"sv-SE","@id":"https:\/\/kinsta.com\/se\/#\/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\/se\/blog\/author\/joelolawanle\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/se\/wp-json\/wp\/v2\/posts\/52199","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/se\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/se\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/se\/wp-json\/wp\/v2\/users\/287"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/se\/wp-json\/wp\/v2\/comments?post=52199"}],"version-history":[{"count":8,"href":"https:\/\/kinsta.com\/se\/wp-json\/wp\/v2\/posts\/52199\/revisions"}],"predecessor-version":[{"id":52221,"href":"https:\/\/kinsta.com\/se\/wp-json\/wp\/v2\/posts\/52199\/revisions\/52221"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/se\/wp-json\/kinsta\/v1\/posts\/52199\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/se\/wp-json\/kinsta\/v1\/posts\/52199\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/se\/wp-json\/kinsta\/v1\/posts\/52199\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/se\/wp-json\/kinsta\/v1\/posts\/52199\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/se\/wp-json\/kinsta\/v1\/posts\/52199\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/se\/wp-json\/kinsta\/v1\/posts\/52199\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/se\/wp-json\/kinsta\/v1\/posts\/52199\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/se\/wp-json\/kinsta\/v1\/posts\/52199\/translations\/es"},{"embeddable":true,"hreflang":"sv","title":"Swedish","href":"https:\/\/kinsta.com\/se\/wp-json\/kinsta\/v1\/posts\/52199\/translations\/se"},{"embeddable":true,"hreflang":"da","title":"Danish","href":"https:\/\/kinsta.com\/se\/wp-json\/kinsta\/v1\/posts\/52199\/translations\/dk"},{"href":"https:\/\/kinsta.com\/se\/wp-json\/kinsta\/v1\/posts\/52199\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/se\/wp-json\/wp\/v2\/media\/52200"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/se\/wp-json\/wp\/v2\/media?parent=52199"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/se\/wp-json\/wp\/v2\/tags?post=52199"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/se\/wp-json\/wp\/v2\/topic?post=52199"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}