{"id":61026,"date":"2023-04-18T12:23:28","date_gmt":"2023-04-18T11:23:28","guid":{"rendered":"https:\/\/kinsta.com\/de\/?p=61026&#038;preview=true&#038;preview_id=61026"},"modified":"2023-08-28T10:50:23","modified_gmt":"2023-08-28T09:50:23","slug":"typescript-5-0","status":"publish","type":"post","link":"https:\/\/kinsta.com\/de\/blog\/typescript-5-0\/","title":{"rendered":"Was ist neu in TypeScript 5.0: Deklaratoren, Const Type, Verbesserung von Enums, Geschwindigkeit und vieles mehr!"},"content":{"rendered":"<p>TypeScript 5.0 wurde am 16. M\u00e4rz 2023 offiziell ver\u00f6ffentlicht und steht nun f\u00fcr alle zur Verf\u00fcgung. Diese Version f\u00fchrt viele neue Funktionen ein, mit dem Ziel, TypeScript kleiner, einfacher und schneller zu machen.<\/p>\n<p>Die neue Version modernisiert die Dekoratoren f\u00fcr die Klassenanpassung und erm\u00f6glicht die wiederverwendbare Anpassung von Klassen und ihren Mitgliedern. <a href=\"https:\/\/kinsta.com\/de\/blog\/arten-von-entwicklern\/\">Entwickler<\/a> k\u00f6nnen jetzt einen const-Modifikator zu einer Typparameter-Deklaration hinzuf\u00fcgen, so dass const-\u00e4hnliche Inferenzen die Standardeinstellung sind. Die neue Version macht au\u00dferdem alle Enums zu Union Enums, was die Codestruktur vereinfacht und das TypeScript-Erlebnis beschleunigt.<\/p>\n<p>In diesem Artikel lernst du die \u00c4nderungen in TypeScript 5.0 kennen und erh\u00e4ltst einen detaillierten Einblick in die neuen Funktionen und M\u00f6glichkeiten.<\/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>Erste Schritte mit TypeScript 5.0<\/h2>\n<p>TypeScript ist ein offizieller Compiler, den du mit <a href=\"https:\/\/kinsta.com\/de\/blog\/was-ist-npm\/\">npm<\/a> in deinem Projekt installieren kannst. Wenn du TypeScript 5.0 in deinem Projekt verwenden m\u00f6chtest, kannst du den folgenden Befehl im Verzeichnis deines Projekts ausf\u00fchren:<\/p>\n<pre><code class=\"language-bash\">npm install -D typescript<\/code><\/pre>\n<p>Dadurch wird der Compiler in das Verzeichnis <strong>node_modules<\/strong> installiert, das du nun mit dem Befehl <code>npx tsc<\/code> aufrufen kannst.<\/p>\n<p>Eine Anleitung zur Verwendung der neueren Version von TypeScript in <a href=\"https:\/\/code.visualstudio.com\/docs\/typescript\/typescript-compiling#_using-the-workspace-version-of-typescript\">Visual Studio Code findest du auch in dieser Dokumentation<\/a>.<\/p>\n\n<h2>Was ist neu in TypeScript 5.0?<\/h2>\n<p>In diesem Artikel stellen wir dir 5 wichtige Neuerungen in TypeScript vor. Zu diesen Funktionen geh\u00f6ren:<\/p>\n<div><\/div><kinsta-auto-toc list-style=\"decimal\" selector=\"h3\" count-number=\"-1\" sub-toc=\"true\"><\/kinsta-auto-toc>\n<h3>Modernisierte Dekoratoren<\/h3>\n<p>Decorators gibt es in TypeScript schon seit einiger Zeit unter einer experimentellen Flagge, aber die neue Version bringt sie auf den neuesten Stand des ECMAScript-Vorschlags, der sich jetzt in <a href=\"https:\/\/github.com\/tc39\/proposal-decorators\" target=\"_blank\" rel=\"noopener noreferrer\">Phase 3<\/a> befindet, d.h. in einer Phase, in der er in TypeScript aufgenommen wird.<\/p>\n<p>Decorators sind eine M\u00f6glichkeit, das Verhalten von Klassen und ihren Mitgliedern auf eine wiederverwendbare Weise anzupassen. Wenn du zum Beispiel eine Klasse hast, die zwei Methoden hat: <code>greet<\/code> und <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 der Praxis sollte diese Klasse kompliziertere Methoden haben, die eine asynchrone Logik verarbeiten und Seiteneffekte haben, z. B. wenn du einige <code>console.log<\/code> Aufrufe einbauen m\u00f6chtest, um die Methoden zu 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>Das ist ein h\u00e4ufig auftretendes Muster, und es w\u00e4re praktisch, eine L\u00f6sung zu haben, die auf jede Methode angewendet werden kann.<\/p>\n<p>An dieser Stelle kommen die Dekoratoren ins Spiel. Wir k\u00f6nnen eine Funktion namens <code>debugMethod<\/code> definieren, die wie folgt aussieht:<\/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>Im obigen Code nimmt <code>debugMethod<\/code> die urspr\u00fcngliche Methode (<code>originalMethod<\/code>) und gibt eine Funktion zur\u00fcck, die Folgendes tut:<\/p>\n<ol start=\"1\">\n<li>Sie protokolliert die Meldung &#8222;Die Ausf\u00fchrung der Methode beginnt&#8220;.<\/li>\n<li>\u00dcbergibt die urspr\u00fcngliche Methode und alle ihre Argumente (einschlie\u00dflich dieser).<\/li>\n<li>Protokolliert die Meldung &#8222;Die Ausf\u00fchrung der Methode endet&#8220;.<\/li>\n<li>Gibt zur\u00fcck, was die urspr\u00fcngliche Methode zur\u00fcckgegeben hat.<\/li>\n<\/ol>\n<p>Durch die Verwendung von Dekoratoren kannst du die <code>debugMethod<\/code> auf deine Methoden anwenden, wie im folgenden Code gezeigt:<\/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>Dies gibt das Folgende aus:<\/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>Bei der Definition der Decorator-Funktion (<code>debugMethod<\/code>) wird ein zweiter Parameter mit dem Namen <code>context<\/code> \u00fcbergeben (es ist das Kontextobjekt &#8211; es enth\u00e4lt einige n\u00fctzliche Informationen dar\u00fcber, wie die dekorierte Methode deklariert wurde und auch den Namen der Methode). Du kannst dein <code>debugMethod<\/code> aktualisieren, um den Methodennamen aus dem <code>context<\/code> Objekt zu erhalten:<\/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>Wenn du deinen Code ausf\u00fchrst, enth\u00e4lt die Ausgabe jetzt den Namen jeder Methode, die mit dem <code>debugMethod<\/code> Dekorator dekoriert wurde:<\/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>Es gibt noch mehr, was du mit Dekoratoren machen kannst. Weitere Informationen \u00fcber die Verwendung von Dekoratoren in TypeScript findest du im <a href=\"https:\/\/github.com\/microsoft\/TypeScript\/pull\/50820\">urspr\u00fcnglichen Pull Request<\/a>.<\/p>\n<h3>Einf\u00fchrung von const Type Parameters<\/h3>\n<p>Dies ist eine weitere gro\u00dfe Neuerung, die dir mit Generics ein neues Werkzeug an die Hand gibt, mit dem du die Inferenz beim Aufruf von Funktionen verbessern kannst. Wenn du Werte mit <code>const<\/code> deklarierst, schlussfolgert TypeScript standardm\u00e4\u00dfig den Typ und nicht die literalen Werte:<\/p>\n<pre><code class=\"language-typescript\">\/\/ Inferred type: string[]\nconst names = ['John', 'Jake', 'Jack'];<\/code><\/pre>\n<p>Um die gew\u00fcnschte Schlussfolgerung zu erhalten, musstest du bisher die Const-Assertion verwenden, indem du &#8222;as const&#8220; hinzuf\u00fcgst:<\/p>\n<pre><code class=\"language-typescript\">\/\/ Inferred type: readonly [\"John\", \"Jake\", \"Jack\"]\nconst names = ['John', 'Jake', 'Jack'] as const;<\/code><\/pre>\n<p>Wenn du Funktionen aufrufst, ist es \u00e4hnlich. Im folgenden Code ist der gefolgerte Typ von <strong>L\u00e4ndern<\/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>M\u00f6glicherweise m\u00f6chtest du einen spezifischeren Typ, den du bisher nur durch Hinzuf\u00fcgen der <code>as const<\/code> Assertion l\u00f6sen konntest:<\/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>Das kann schwierig zu merken und zu implementieren sein. TypeScript 5.0 f\u00fchrt jedoch eine neue Funktion ein, mit der du einen const-Modifikator zu einer Typparameter-Deklaration hinzuf\u00fcgen kannst, der automatisch eine const-\u00e4hnliche Inferenz als Standard anwendet.<\/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>Die Verwendung von <code>const<\/code> Typparametern erm\u00f6glicht es Entwicklern, ihre Absicht in ihrem Code deutlicher auszudr\u00fccken. Wenn eine Variable konstant sein und sich nie \u00e4ndern soll, stellt die Verwendung eines <code>const<\/code> Typparameters sicher, dass sie nicht versehentlich ge\u00e4ndert werden kann.<\/p>\n<p>Weitere Informationen dar\u00fcber, wie der Typparameter const in TypeScript funktioniert, findest du im <a href=\"https:\/\/github.com\/microsoft\/TypeScript\/pull\/51865\">urspr\u00fcnglichen Pull Request<\/a>.<\/p>\n<h3>Verbesserungen an Enums<\/h3>\n<p>Enums in TypeScript sind ein leistungsf\u00e4higes Konstrukt, das es Entwicklern erm\u00f6glicht, eine Reihe von benannten Konstanten zu definieren. In TypeScript 5.0 wurden Verbesserungen an Enums vorgenommen, um sie noch flexibler und n\u00fctzlicher zu machen.<\/p>\n<p>Wenn du zum Beispiel die folgende Enum in einer Funktion \u00fcbergeben hast:<\/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>Vor der Einf\u00fchrung von TypeScript 5.0 konntest du eine falsche Levelnummer \u00fcbergeben und es wurde kein Fehler ausgegeben. Aber mit der Einf\u00fchrung von TypeScript 5.0 wird sofort ein Fehler ausgegeben.<\/p>\n<p>Au\u00dferdem werden in der neuen Version alle Enums zu Union Enums, indem f\u00fcr jedes berechnete Element ein eigener Typ erstellt wird. Diese Verbesserung erm\u00f6glicht es, alle Enums einzugrenzen und ihre Mitglieder als Typen zu referenzieren:<\/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>Leistungsverbesserungen von TypeScript 5.0<\/h3>\n<p>TypeScript 5.0 enth\u00e4lt zahlreiche wichtige \u00c4nderungen an der Codestruktur, den Datenstrukturen und den algorithmischen Erweiterungen. Dies hat dazu beigetragen, das gesamte TypeScript-Erlebnis von der Installation bis zur Ausf\u00fchrung zu verbessern und es schneller und effizienter zu machen.<\/p>\n<p>Der Unterschied zwischen der Paketgr\u00f6\u00dfe von TypeScript 5.0 und 4.9 ist zum Beispiel ziemlich beeindruckend.<\/p>\n<p>TypeScript wurde k\u00fcrzlich von namespaces zu modules migriert, wodurch es moderne Build-Tools nutzen kann, die Optimierungen wie Scope Hoisting durchf\u00fchren k\u00f6nnen. Au\u00dferdem konnten durch das Entfernen von veraltetem Code 26,4 MB von den 63,8 MB der TypeScript 4.9-Paketgr\u00f6\u00dfe eingespart werden.<\/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-Paketgr\u00f6\u00dfe\" width=\"1600\" height=\"959\"><figcaption class=\"wp-caption-text\">TypeScript-Paketgr\u00f6\u00dfe<\/figcaption><\/figure>\n<p>Hier sind noch ein paar weitere interessante Verbesserungen bez\u00fcglich Geschwindigkeit und Gr\u00f6\u00dfe zwischen TypeScript 5.0 und 4.9:<\/p>\n<div class=\"responsive-table\">\n<table>\n<tbody>\n<tr>\n<td colspan=\"1\" rowspan=\"1\"><strong>Szenario<\/strong><\/td>\n<td colspan=\"1\" rowspan=\"1\"><strong>Zeit oder Gr\u00f6\u00dfe im Vergleich zu TS 4.9<\/strong><\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\">material-ui Erstellungszeit<\/td>\n<td colspan=\"1\" rowspan=\"1\">90%<\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\">TypeScript Compiler-Startzeit<\/td>\n<td colspan=\"1\" rowspan=\"1\">89%<\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\">Playwright Erstellungszeit<\/td>\n<td colspan=\"1\" rowspan=\"1\">88%<\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\">TypeScript Compiler-Selbstbauzeit<\/td>\n<td colspan=\"1\" rowspan=\"1\">87%<\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\">Outlook Web Erstellungszeit<\/td>\n<td colspan=\"1\" rowspan=\"1\">82%<\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\">VS Code Erstellungszeit<\/td>\n<td colspan=\"1\" rowspan=\"1\">80%<\/td>\n<\/tr>\n<tr>\n<td colspan=\"1\" rowspan=\"1\">typescript npm Paketgr\u00f6\u00dfe<\/td>\n<td colspan=\"1\" rowspan=\"1\">59%<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<h3>Bundler-Aufl\u00f6sung f\u00fcr bessere Modulaufl\u00f6sung<\/h3>\n<p>Wenn du eine Import-Anweisung in TypeScript schreibst, muss der Compiler wissen, worauf sich der Import bezieht. Das macht er mit der Modulaufl\u00f6sung. Wenn du zum Beispiel <code>import { a } from \"moduleA\"<\/code> schreibst, muss der Compiler die Definition von <code>a<\/code> in <code>moduleA<\/code> kennen, um seine Verwendung zu \u00fcberpr\u00fcfen.<\/p>\n<p>In TypeScript 4.7 wurden zwei neue Optionen f\u00fcr die Einstellungen <code>--module<\/code> und <code>moduleResolution<\/code> hinzugef\u00fcgt: <code>node16<\/code> und <code>nodenext<\/code>.<\/p>\n<p>Der Zweck dieser Optionen war es, die genauen Lookup-Regeln f\u00fcr ECMAScript-Module in <a href=\"https:\/\/kinsta.com\/de\/blog\/node-js-vs-php\/\">Node.js<\/a> genauer darzustellen. Dieser Modus hat jedoch einige Einschr\u00e4nkungen, die von anderen Tools nicht beachtet werden.<\/p>\n<p>Zum Beispiel muss in einem ECMAScript-Modul in Node.js jeder relative Import eine Dateierweiterung enthalten, damit er korrekt funktioniert:<\/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 hat eine neue Strategie namens &#8222;moduleResolution bundler&#8220; eingef\u00fchrt Diese Strategie kannst du umsetzen, indem du den folgenden Code in den Abschnitt &#8222;compilerOptions&#8220; deiner TypeScript-Konfigurationsdatei einf\u00fcgst:<\/p>\n<pre><code class=\"language-json\">{\n    \"compilerOptions\": {\n        \"target\": \"esnext\",\n        \"moduleResolution\": \"bundler\"\n    }\n}<\/code><\/pre>\n<p>Diese neue Strategie eignet sich f\u00fcr alle, die moderne Bundler wie Vite, esbuild, swc, Webpack, Parcel und andere verwenden, die eine hybride Lookup-Strategie nutzen.<\/p>\n<p>Weitere Informationen dar\u00fcber, wie <code>moduleResolution<\/code> bundler in TypeScript funktioniert, findest du im <a href=\"https:\/\/github.com\/microsoft\/TypeScript\/pull\/51669\" target=\"_blank\" rel=\"noopener noreferrer\">urspr\u00fcnglichen Pull Request und seiner Implementierung<\/a>.<\/p>\n<h2>Abwertungen<\/h2>\n<p>TypeScript 5.0 bringt einige Abwertungen mit sich, darunter Laufzeitanforderungen, \u00c4nderungen an lib.d.ts und <a href=\"https:\/\/kinsta.com\/de\/blog\/graphql-nodejs\/\">API-\u00c4nderungen<\/a>.<\/p>\n<ol start=\"1\">\n<li><strong>Laufzeitanforderungen:<\/strong> TypeScript zielt jetzt auf ECMAScript 2018 ab, und das Paket setzt eine minimale Engine-Erwartung von 12.20. Daher sollten Nutzer von Node.js mindestens die Version 12.20 oder h\u00f6her haben, um TypeScript 5.0 zu verwenden.<\/li>\n<li><strong>lib.d.ts \u00c4nderungen:<\/strong> Es wurden einige \u00c4nderungen an der Art und Weise vorgenommen, wie Typen f\u00fcr das DOM generiert werden, was sich auf bestehenden Code auswirken kann. Insbesondere wurden bestimmte Eigenschaften von Zahlentypen in numerische Literaltypen umgewandelt, und Eigenschaften und Methoden f\u00fcr die Ereignisbehandlung beim Ausschneiden, Kopieren und Einf\u00fcgen wurden in andere Schnittstellen verschoben.<\/li>\n<li><strong>API-\u00c4nderungen:<\/strong> Einige unn\u00f6tige Schnittstellen wurden entfernt und die Korrektheit wurde verbessert. TypeScript 5.0 ist au\u00dferdem auf modules umgestiegen.<\/li>\n<\/ol>\n<p>Mit TypeScript 5.0 wurden bestimmte Einstellungen und die dazugeh\u00f6rigen Werte veraltet, darunter <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> und <code>preserveValueImports<\/code>, sowie das Voranstellen in Projektreferenzen.<\/p>\n<p>Diese Konfigurationen bleiben zwar bis TypeScript 5.5 g\u00fcltig, aber es wird eine Warnung ausgegeben, um Benutzer zu erreichen, die sie noch verwenden.<\/p>\n\n<h2>Zusammenfassung<\/h2>\n<p>In diesem Artikel hast du einige der wichtigsten Funktionen und Verbesserungen kennengelernt, die TypeScript 5.0 mit sich bringt, z. B. Verbesserungen bei Enums, Bundler-Aufl\u00f6sung und Const-Type-Parametern sowie Verbesserungen bei Geschwindigkeit und Gr\u00f6\u00dfe.<\/p>\n<p>Wenn du dar\u00fcber nachdenkst, TypeScript f\u00fcr deine n\u00e4chsten Projekte einzusetzen, solltest du <a href=\"https:\/\/sevalla.com\/application-hosting\/\">das Anwendungs-Hosting von Kinsta kostenlos ausprobieren<\/a>.<\/p>\n<p><em>Jetzt bist du dran! Welche Funktionen oder Verbesserungen findest du in TypeScript 5.0 am interessantesten? Gibt es wichtige Neuerungen, die wir vielleicht \u00fcbersehen haben? Lass es uns in den Kommentaren wissen.<\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>TypeScript 5.0 wurde am 16. M\u00e4rz 2023 offiziell ver\u00f6ffentlicht und steht nun f\u00fcr alle zur Verf\u00fcgung. Diese Version f\u00fchrt viele neue Funktionen ein, mit dem Ziel, &#8230;<\/p>\n","protected":false},"author":287,"featured_media":61027,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[951,952],"class_list":["post-61026","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>Was ist neu in TypeScript 5.0: Deklaratoren, Const Type, Verbesserung von Enums, Geschwindigkeit - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Tauche tief in das neue TypeScript 5.0 ein und finde heraus, was neu ist, einschlie\u00dflich Deklaratoren, Const Type, Enums Improvement und vieles mehr.\" \/>\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\/de\/blog\/typescript-5-0\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Was ist neu in TypeScript 5.0: Deklaratoren, Const Type, Verbesserung von Enums, Geschwindigkeit und vieles mehr!\" \/>\n<meta property=\"og:description\" content=\"Tauche tief in das neue TypeScript 5.0 ein und finde heraus, was neu ist, einschlie\u00dflich Deklaratoren, Const Type, Enums Improvement und vieles mehr.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/de\/blog\/typescript-5-0\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-04-18T11:23:28+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-08-28T09:50:23+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/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=\"Tauche tief in das neue TypeScript 5.0 ein und finde heraus, was neu ist, einschlie\u00dflich Deklaratoren, Const Type, Enums Improvement und vieles mehr.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/04\/typescript-50.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@olawanle_joel\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_DE\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Joel Olawanle\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"9\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/typescript-5-0\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/typescript-5-0\/\"},\"author\":{\"name\":\"Joel Olawanle\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\"},\"headline\":\"Was ist neu in TypeScript 5.0: Deklaratoren, Const Type, Verbesserung von Enums, Geschwindigkeit und vieles mehr!\",\"datePublished\":\"2023-04-18T11:23:28+00:00\",\"dateModified\":\"2023-08-28T09:50:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/typescript-5-0\/\"},\"wordCount\":1517,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/de\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/typescript-5-0\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/04\/typescript-50.jpg\",\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/de\/blog\/typescript-5-0\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/typescript-5-0\/\",\"url\":\"https:\/\/kinsta.com\/de\/blog\/typescript-5-0\/\",\"name\":\"Was ist neu in TypeScript 5.0: Deklaratoren, Const Type, Verbesserung von Enums, Geschwindigkeit - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/typescript-5-0\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/typescript-5-0\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/04\/typescript-50.jpg\",\"datePublished\":\"2023-04-18T11:23:28+00:00\",\"dateModified\":\"2023-08-28T09:50:23+00:00\",\"description\":\"Tauche tief in das neue TypeScript 5.0 ein und finde heraus, was neu ist, einschlie\u00dflich Deklaratoren, Const Type, Enums Improvement und vieles mehr.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/typescript-5-0\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/de\/blog\/typescript-5-0\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/typescript-5-0\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/04\/typescript-50.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/04\/typescript-50.jpg\",\"width\":3042,\"height\":1521,\"caption\":\"Was ist neu in TypeScript 5.0: Deklaratoren, Const Type, Verbesserung von Enums, Geschwindigkeit\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/typescript-5-0\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/de\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"JavaScript-Tutorials\",\"item\":\"https:\/\/kinsta.com\/de\/thema\/javascript-tutorials\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Was ist neu in TypeScript 5.0: Deklaratoren, Const Type, Verbesserung von Enums, Geschwindigkeit und vieles mehr!\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/de\/#website\",\"url\":\"https:\/\/kinsta.com\/de\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Schnelle, sichere und hochwertige Hosting-L\u00f6sungen\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/de\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/de\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/de\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/de\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/\",\"https:\/\/x.com\/Kinsta_DE\",\"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\/de\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\",\"name\":\"Joel Olawanle\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/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\/de\/blog\/author\/joelolawanle\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Was ist neu in TypeScript 5.0: Deklaratoren, Const Type, Verbesserung von Enums, Geschwindigkeit - Kinsta\u00ae","description":"Tauche tief in das neue TypeScript 5.0 ein und finde heraus, was neu ist, einschlie\u00dflich Deklaratoren, Const Type, Enums Improvement und vieles mehr.","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\/de\/blog\/typescript-5-0\/","og_locale":"de_DE","og_type":"article","og_title":"Was ist neu in TypeScript 5.0: Deklaratoren, Const Type, Verbesserung von Enums, Geschwindigkeit und vieles mehr!","og_description":"Tauche tief in das neue TypeScript 5.0 ein und finde heraus, was neu ist, einschlie\u00dflich Deklaratoren, Const Type, Enums Improvement und vieles mehr.","og_url":"https:\/\/kinsta.com\/de\/blog\/typescript-5-0\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/","article_published_time":"2023-04-18T11:23:28+00:00","article_modified_time":"2023-08-28T09:50:23+00:00","og_image":[{"width":3042,"height":1521,"url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/04\/typescript-50.jpg","type":"image\/jpeg"}],"author":"Joel Olawanle","twitter_card":"summary_large_image","twitter_description":"Tauche tief in das neue TypeScript 5.0 ein und finde heraus, was neu ist, einschlie\u00dflich Deklaratoren, Const Type, Enums Improvement und vieles mehr.","twitter_image":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/04\/typescript-50.jpg","twitter_creator":"@olawanle_joel","twitter_site":"@Kinsta_DE","twitter_misc":{"Verfasst von":"Joel Olawanle","Gesch\u00e4tzte Lesezeit":"9\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/de\/blog\/typescript-5-0\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/de\/blog\/typescript-5-0\/"},"author":{"name":"Joel Olawanle","@id":"https:\/\/kinsta.com\/de\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07"},"headline":"Was ist neu in TypeScript 5.0: Deklaratoren, Const Type, Verbesserung von Enums, Geschwindigkeit und vieles mehr!","datePublished":"2023-04-18T11:23:28+00:00","dateModified":"2023-08-28T09:50:23+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/de\/blog\/typescript-5-0\/"},"wordCount":1517,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/de\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/de\/blog\/typescript-5-0\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/04\/typescript-50.jpg","inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/de\/blog\/typescript-5-0\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/de\/blog\/typescript-5-0\/","url":"https:\/\/kinsta.com\/de\/blog\/typescript-5-0\/","name":"Was ist neu in TypeScript 5.0: Deklaratoren, Const Type, Verbesserung von Enums, Geschwindigkeit - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/de\/blog\/typescript-5-0\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/de\/blog\/typescript-5-0\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/04\/typescript-50.jpg","datePublished":"2023-04-18T11:23:28+00:00","dateModified":"2023-08-28T09:50:23+00:00","description":"Tauche tief in das neue TypeScript 5.0 ein und finde heraus, was neu ist, einschlie\u00dflich Deklaratoren, Const Type, Enums Improvement und vieles mehr.","breadcrumb":{"@id":"https:\/\/kinsta.com\/de\/blog\/typescript-5-0\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/de\/blog\/typescript-5-0\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinsta.com\/de\/blog\/typescript-5-0\/#primaryimage","url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/04\/typescript-50.jpg","contentUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/04\/typescript-50.jpg","width":3042,"height":1521,"caption":"Was ist neu in TypeScript 5.0: Deklaratoren, Const Type, Verbesserung von Enums, Geschwindigkeit"},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/de\/blog\/typescript-5-0\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/de\/"},{"@type":"ListItem","position":2,"name":"JavaScript-Tutorials","item":"https:\/\/kinsta.com\/de\/thema\/javascript-tutorials\/"},{"@type":"ListItem","position":3,"name":"Was ist neu in TypeScript 5.0: Deklaratoren, Const Type, Verbesserung von Enums, Geschwindigkeit und vieles mehr!"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/de\/#website","url":"https:\/\/kinsta.com\/de\/","name":"Kinsta\u00ae","description":"Schnelle, sichere und hochwertige Hosting-L\u00f6sungen","publisher":{"@id":"https:\/\/kinsta.com\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/de\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/de\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/","https:\/\/x.com\/Kinsta_DE","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\/de\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07","name":"Joel Olawanle","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinsta.com\/de\/#\/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\/de\/blog\/author\/joelolawanle\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/61026","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/users\/287"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/comments?post=61026"}],"version-history":[{"count":7,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/61026\/revisions"}],"predecessor-version":[{"id":61216,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/61026\/revisions\/61216"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/61026\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/61026\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/61026\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/61026\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/61026\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/61026\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/61026\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/61026\/translations\/es"},{"embeddable":true,"hreflang":"sv","title":"Swedish","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/61026\/translations\/se"},{"embeddable":true,"hreflang":"da","title":"Danish","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/61026\/translations\/dk"},{"href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/61026\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/media\/61027"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/media?parent=61026"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/tags?post=61026"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/topic?post=61026"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}