{"id":62024,"date":"2023-05-24T11:59:33","date_gmt":"2023-05-24T10:59:33","guid":{"rendered":"https:\/\/kinsta.com\/de\/?p=62024&#038;post_type=knowledgebase&#038;preview_id=62024"},"modified":"2025-10-01T20:15:50","modified_gmt":"2025-10-01T19:15:50","slug":"was-ist-typescript","status":"publish","type":"post","link":"https:\/\/kinsta.com\/de\/blog\/was-ist-typescript\/","title":{"rendered":"Was ist TypeScript? Ein umfassender Leitfaden"},"content":{"rendered":"<p>In der heutigen schnelllebigen digitalen Welt ist JavaScript zur bevorzugten Sprache f\u00fcr die Entwicklung dynamischer Webanwendungen geworden. Die dynamische Typisierung von JavaScript kann jedoch manchmal zu subtilen Fehlern f\u00fchren, die es schwierig machen, sie in einem fr\u00fchen Stadium des Entwicklungsprozesses zu erkennen.<\/p>\n<p>Hier kommt <a href=\"https:\/\/kinsta.com\/de\/blog\/typescript-5-0\/\">TypeScript<\/a> ins Spiel &#8211; um die Art und Weise, wie wir <a href=\"https:\/\/kinsta.com\/javascript\/\">JavaScript<\/a>-Code schreiben, zu revolutionieren.<\/p>\n<p>In diesem Artikel tauchen wir tief in die Welt von TypeScript ein und erkunden Funktionen, Vorteile und Best Practices. Au\u00dferdem erf\u00e4hrst du, wie TypeScript die Grenzen von JavaScript \u00fcberwindet und die M\u00f6glichkeiten der statischen Typisierung f\u00fcr die Entwicklung robuster und skalierbarer Webanwendungen freisetzt.<\/p>\n<p>Lass uns eintauchen!<br \/>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc><\/p>\n<h2>Was ist TypeScript?<\/h2>\n<p>TypeScript ist ein Superset von JavaScript, das JavaScript um optionale statische Typisierung und erweiterte Funktionen erweitert. Es wurde von Microsoft entwickelt und erstmals im Oktober 2012 ver\u00f6ffentlicht. Seit seiner Ver\u00f6ffentlichung im Jahr 2012 hat es sich in der Webentwicklergemeinschaft schnell durchgesetzt.<\/p>\n<p>Laut der <a href=\"https:\/\/survey.stackoverflow.co\/2022\/#section-most-loved-dreaded-and-wanted-programming-scripting-and-markup-languages\" target=\"_blank\" rel=\"noopener noreferrer\">Stack Overflow-Entwicklerumfrage<\/a> aus dem Jahr 2022 ist TypeScript mit 73,46 % die viertbeliebteste Technologie. TypeScript wurde entwickelt, um einige der Einschr\u00e4nkungen von JavaScript zu beseitigen, z. B. das Fehlen einer starken Typisierung, die zu subtilen Fehlern f\u00fchren kann, die w\u00e4hrend der Entwicklung schwer zu erkennen sind.<\/p>\n<p>Betrachte zum Beispiel den folgenden JavaScript-Code:<\/p>\n<pre><code class=\"language-js\">function add(a, b) {\n  return a + b;\n}\n\nlet result = add(10, \"20\"); \/\/ No error, but result is \"1020\" instead of 30<\/code><\/pre>\n<p>Der obige Code erstellt eine Funktion <code>add<\/code>, die dynamisch typisiert ist. Der Typ der Argumente <code>a<\/code> und <code>b<\/code> wird nicht erzwungen. Daher f\u00fchrt die \u00dcbergabe einer Zeichenkette anstelle einer Zahl als Argument nicht zu einem Fehler, sondern verkettet die Werte als Zeichenketten, was zu unerwartetem Verhalten f\u00fchrt.<\/p>\n<p>Mit TypeScript wird eine optionale statische Typisierung eingef\u00fchrt, die es <a href=\"https:\/\/kinsta.com\/de\/blog\/arten-von-entwicklern\/\">Entwicklern<\/a> erm\u00f6glicht, die Typen von Variablen, Funktionsparametern und R\u00fcckgabewerten zu spezifizieren und typbezogene Fehler w\u00e4hrend der Entwicklung abzufangen.<\/p>\n<pre><code class=\"language-typescript\">function add(a: number, b: number): number {\n  return a + b;\n}\n\nlet result = add(10, \"20\"); \/\/ Error: Argument of type 'string' is not assignable to parameter of type 'number'<\/code><\/pre>\n<p>Im obigen TypeScript-Code sind die Typen der Parameter <code>a<\/code> und <code>b<\/code> ausdr\u00fccklich als Zahlen definiert. Wenn eine Zeichenkette als Argument \u00fcbergeben wird, gibt TypeScript einen Kompilierfehler aus, damit m\u00f6gliche Probleme fr\u00fchzeitig erkannt werden k\u00f6nnen.<\/p>\n<aside role=\"note\" class=\"wp-block-kinsta-notice is-style-info\">\n            <h3>Info<\/h3>\n        <p>Microsoft ist weiterhin aktiv an der Pflege und Verbesserung von TypeScript beteiligt und ver\u00f6ffentlicht regelm\u00e4\u00dfig neue Versionen mit erweiterten Funktionen und verbesserter Leistung, wie z. B. die neueste Version <a href=\"https:\/\/kinsta.com\/de\/blog\/typescript-5-0\/\">TypeScript 5.0<\/a>.<\/p>\n<\/aside>\n\n\n<h2>Merkmale von TypeScript<\/h2>\n<p>TypeScript bietet mehrere leistungsstarke Funktionen f\u00fcr die moderne <a href=\"https:\/\/kinsta.com\/web-development\/\">Webentwicklung<\/a>, die einige der Einschr\u00e4nkungen von JavaScript beseitigen. Diese Funktionen verbessern die Erfahrung der Entwickler und die Organisation des Codes. Sie umfassen:<\/p>\n<div><\/div><kinsta-auto-toc list-style=\"decimal\" selector=\"h3\" count-number=\"7\" sub-toc=\"true\"><\/kinsta-auto-toc>\n<h3>1. Statische Typisierung<\/h3>\n<p>TypeScript verf\u00fcgt \u00fcber ein starkes Typisierungssystem, das es erm\u00f6glicht, die Typen von Variablen und Funktionsparametern zur Kompilierungszeit festzulegen. Dies erm\u00f6glicht eine fr\u00fchzeitige Erkennung von typbezogenen Fehlern und macht den Code zuverl\u00e4ssiger und weniger anf\u00e4llig f\u00fcr Bugs.<\/p>\n<p>In JavaScript hingegen sind die Variablen dynamisch typisiert, d. h. ihr Typ kann sich w\u00e4hrend der Laufzeit \u00e4ndern.<\/p>\n<p>Der JavaScript-Code unten zeigt zum Beispiel die Deklaration von zwei Variablen, die dynamisch als Zahl und String typisiert sind:<\/p>\n<pre><code class=\"language-js\">let num1 = 10; \/\/ num1 is dynamically typed as a number\nlet num2 = \"20\"; \/\/ num2 is dynamically typed as a string\n\nlet result = num1 + num2; \/\/ No error at compile-time\nconsole.log(result); \/\/ Output: \"1020\"<\/code><\/pre>\n<p>Der obige Code gibt &#8222;1020&#8220; aus, eine Verkettung von Zahl und String. Das ist nicht die erwartete Ausgabe &#8211; und das kann sich auf deinen Code auswirken. Der Nachteil von JavaScript ist, dass es keinen Fehler ausgibt. Mit TypeScript kannst du dies beheben, indem du die Typen der einzelnen Variablen angibst:<\/p>\n<pre><code class=\"language-typescript\">let num1: number = 10; \/\/ num1 is statically typed as a number\nlet num2: string = \"20\"; \/\/ num2 is statically typed as a string\n\nlet result = num1 + num2; \/\/ Error: Type 'string' is not assignable to type 'number'<\/code><\/pre>\n<p>Im obigen Code f\u00fchrt der Versuch, eine Zahl und eine Zeichenkette mit dem Operator <code>+<\/code> zu verkn\u00fcpfen, zu einem Kompilierungsfehler, da TypeScript eine strenge Typenpr\u00fcfung durchf\u00fchrt.<\/p>\n<p>Dadurch werden potenzielle typbezogene Fehler vor der Ausf\u00fchrung des Codes abgefangen, was zu robusterem und fehlerfreiem Code f\u00fchrt.<\/p>\n<h3>2. Optionale Typisierung<\/h3>\n<p>TypeScript bietet Flexibilit\u00e4t bei der Wahl, ob statische Typisierung verwendet werden soll oder nicht. Das hei\u00dft, du kannst entweder Typen f\u00fcr Variablen und Funktionsparameter angeben oder TypeScript die Typen automatisch aus dem zugewiesenen Wert ableiten lassen.<\/p>\n<p>Ein Beispiel:<\/p>\n<pre><code class=\"language-typescript\">let num1: number = 10; \/\/ num1 is statically typed as a number\nlet num2 = \"20\"; \/\/ num2 is dynamically typed as a string\n\nlet result = num1 + num2; \/\/ Error: Operator '+' cannot be applied to types 'number' and 'string'<\/code><\/pre>\n<p>In diesem Code wird der Typ von <code>num2<\/code> anhand des zugewiesenen Wertes als <code>string<\/code> abgeleitet, aber du kannst den Typ auch angeben, wenn du m\u00f6chtest.<\/p>\n<p>Du kannst den Typ auch auf <code>any<\/code> setzen, was bedeutet, dass er jeden Wert akzeptiert:<\/p>\n<pre><code class=\"language-typescript\">let num1: number = 10;\nlet num2: any = \"20\";\n\nlet result = num1 + num2; \/\/ Error: Operator '+' cannot be applied to types 'number' and 'string'<\/code><\/pre>\n<h3>3. ES6+ Funktionen<\/h3>\n<p>TypeScript unterst\u00fctzt moderne JavaScript-Funktionen, einschlie\u00dflich derer, die in ECMAScript 6 (ES6) und sp\u00e4teren Versionen eingef\u00fchrt wurden.<\/p>\n<p>Dies erm\u00f6glicht es Entwicklern, saubereren und aussagekr\u00e4ftigeren Code zu schreiben, indem sie Funktionen wie Pfeilfunktionen, Destrukturierung, Template-Literale und mehr nutzen und zus\u00e4tzlich eine Typ\u00fcberpr\u00fcfung durchf\u00fchren.<\/p>\n<p>Ein Beispiel:<\/p>\n<pre><code class=\"language-typescript\">const greeting = (name: string): string =&gt; {\n  return `Hello, ${name}!`; \/\/ Use of arrow function and template literal\n};\n\nconsole.log(greeting(\"John\")); \/\/ Output: Hello, John!<\/code><\/pre>\n<p>In diesem Code werden die Pfeilfunktion und das Template-Literal perfekt eingesetzt. Das Gleiche gilt f\u00fcr die gesamte JavaScript-Syntax.<\/p>\n<h3>4. Code-Organisation<\/h3>\n<p>In JavaScript kann die Organisation von Code in separaten Dateien und die Verwaltung von Abh\u00e4ngigkeiten zu einer Herausforderung werden, wenn die Codebasis w\u00e4chst. TypeScript bietet jedoch integrierte Unterst\u00fctzung f\u00fcr Module und Namespaces, um den Code besser zu organisieren.<\/p>\n<p>Module erm\u00f6glichen die Kapselung von Code in separaten Dateien und machen es einfacher, gro\u00dfe Codebases zu verwalten und zu pflegen.<\/p>\n<p>Hier ist ein Beispiel:<\/p>\n<pre><code class=\"language-typescript\">\/\/ greeting.ts:\nexport function greet(name: string): string { \/\/ Export a function from a module\n  return `Hello, ${name}!`;\n}\n\n\/\/ app.ts:\nimport { greet } from \".\/greeting\"; \/\/ Import from a module\n\nconsole.log(greet(\"John\")); \/\/ Output: Hello, John!<\/code><\/pre>\n<p>Im obigen Beispiel haben wir zwei separate Dateien <strong>greeting.ts<\/strong> und <strong>app.ts<\/strong>. Die Datei <strong>app<\/strong><strong>.ts<\/strong> importiert die Funktion <code>greet<\/code> aus der Datei <strong>greeting.ts<\/strong> mit der Anweisung <code>import<\/code>. Die Datei <strong>greeting.ts<\/strong> exportiert die Funktion <code>greet<\/code> mit dem Schl\u00fcsselwort <code>export<\/code> und macht sie so f\u00fcr den Import in andere Dateien zug\u00e4nglich.<\/p>\n<p>Dies erm\u00f6glicht eine bessere Organisation des Codes und eine bessere Trennung der Bereiche, was die Verwaltung und Wartung gro\u00dfer Codebasen erleichtert.<\/p>\n<p>Namespaces in TypeScript bieten eine M\u00f6glichkeit, zusammenh\u00e4ngenden Code zu gruppieren und die Verschmutzung durch globale Namespaces zu vermeiden. Sie k\u00f6nnen verwendet werden, um einen Container f\u00fcr eine Reihe von verwandten Klassen, Schnittstellen, Funktionen oder Variablen zu definieren.<\/p>\n<p>Hier ist ein Beispiel:<\/p>\n<pre><code class=\"language-typescript\">namespace Utilities {\n  export function greet(name: string): string {\n    return `Hello, ${name}!`;\n  }\n  \n  export function capitalize(str: string): string {\n    return str.toUpperCase();\n  }\n}\n\nconsole.log(Utilities.greet(\"John\")); \/\/ Output: Hello, John!\nconsole.log(Utilities.capitalize(\"hello\")); \/\/ Output: HELLO<\/code><\/pre>\n<p>In diesem Code definieren wir <code>namespace Utilities<\/code>, die zwei Funktionen enth\u00e4lt, <code>greet<\/code> und <code>capitalize<\/code>. Wir k\u00f6nnen auf diese Funktionen zugreifen, indem wir den Namen des Namespaces gefolgt vom Namen der Funktion verwenden, um eine logische Gruppierung f\u00fcr verwandten Code zu erhalten.<\/p>\n<h3>5. Objektorientierte Programmierung (OOP) Funktionen<\/h3>\n<p>TypeScript unterst\u00fctzt <a href=\"https:\/\/kinsta.com\/de\/blog\/objektorientierten-programmierung-python\/\">OOP-Konzepte<\/a> wie Klassen, Schnittstellen und Vererbung und erm\u00f6glicht so einen strukturierten und organisierten Code.<\/p>\n<p>Ein Beispiel:<\/p>\n<pre><code class=\"language-typescript\">class Person {\n  constructor(public name: string) {} \/\/ Define a class with a constructor\n  greet(): string { \/\/ Define a method in a class\n    return `Hello, my name is ${this.name}!`;\n  }\n}\n\nconst john = new Person(\"John\"); \/\/ Create an instance of the class\nconsole.log(john.greet()); \/\/ Output: Hello, my name is John!<\/code><\/pre>\n<h3>6. Erweitertes Typsystem<\/h3>\n<p>TypeScript bietet ein fortschrittliches Typsystem, das Generics, Unions, \u00dcberschneidungen und mehr unterst\u00fctzt. Diese Funktionen verbessern die statische Typ\u00fcberpr\u00fcfung von TypeScript und erm\u00f6glichen es Entwicklern, robusteren und aussagekr\u00e4ftigeren Code zu schreiben.<\/p>\n<p><strong>Generics:<\/strong> Generics erm\u00f6glichen das Schreiben von wiederverwendbarem Code, der mit verschiedenen Typen arbeiten kann. Generics sind wie Platzhalter f\u00fcr Typen, die zur Laufzeit anhand der an eine Funktion oder eine Klasse \u00fcbergebenen Werte bestimmt werden.<\/p>\n<p>Definieren wir zum Beispiel eine generische Funktion identity, die ein Argument vom Typ <code>T<\/code> entgegennimmt und einen Wert desselben Typs <code>T<\/code> zur\u00fcckgibt:<\/p>\n<pre><code class=\"language-typescript\">function identity(value: T): T {\n  return value;\n}\n\nlet num: number = identity(10); \/\/ T is inferred as number\nlet str: string = identity(\"hello\"); \/\/ T is inferred as string<\/code><\/pre>\n<p>Im obigen Beispiel wird der Typ <code>T<\/code> aus dem Typ des an die Funktion \u00fcbergebenen Wertes abgeleitet. Bei der ersten Verwendung der Funktion identity wird <code>T<\/code> als Zahl abgeleitet, weil wir <code>10<\/code> als Argument \u00fcbergeben, und bei der zweiten Verwendung wird <code>T<\/code> als String abgeleitet, weil wir <code>\"hello\"<\/code> als Argument \u00fcbergeben.<\/p>\n<p><strong>Unions und Schnittmengen:<\/strong> Unions und \u00dcberschneidungen werden verwendet, um Typen zusammenzusetzen und komplexere Typbeziehungen zu erstellen.<\/p>\n<p>Unions erm\u00f6glichen die Kombination von zwei oder mehr Typen zu einem einzigen Typ, der jeden der kombinierten Typen haben kann. Schnittpunkte erm\u00f6glichen die Kombination von zwei oder mehr Typen zu einem einzigen Typ, der alle kombinierten Typen erf\u00fcllen muss.<\/p>\n<p>Wir k\u00f6nnen zum Beispiel zwei Typen definieren: <code>Employee<\/code> und <code>Manager<\/code>, die einen Mitarbeiter bzw. eine F\u00fchrungskraft repr\u00e4sentieren.<\/p>\n<pre><code class=\"language-typescript\">type Employee = { name: string, role: string };\ntype Manager = { name: string, department: string };<\/code><\/pre>\n<p>Mit den Typen <code>Employee<\/code> und <code>Manager<\/code> k\u00f6nnen wir einen Vereinigungstyp <code>EmployeeOrManager<\/code> definieren, der entweder ein <code>Employee<\/code> oder ein <code>Manager<\/code> sein kann.<\/p>\n<pre><code class=\"language-typescript\">type EmployeeOrManager = Employee | Manager; \/\/ Union type\n\nlet person1: EmployeeOrManager = { name: \"John\", role: \"Developer\" }; \/\/ Can be either Employee or Manager<\/code><\/pre>\n<p>Im obigen Code ist die Variable <code>person1<\/code> vom Typ <code>EmployeeOrManager<\/code>, was bedeutet, dass ihr ein Objekt zugewiesen werden kann, das entweder den Typ <code>Employee<\/code> oder <code>Manager<\/code> erf\u00fcllt.<\/p>\n<p>Wir k\u00f6nnen auch einen Kreuzungstyp <code>EmployeeOrManager<\/code> definieren, der die Typen <code>Employee<\/code> und <code>Manager<\/code> erf\u00fcllen muss.<\/p>\n<pre><code class=\"language-typescript\">type EmployeeAndManager = Employee & Manager; \/\/ Intersection type\n\nlet person2: EmployeeAndManager = { name: \"Jane\", role: \"Manager\", department: \"HR\" }; \/\/ Must be both Employee and Manager<\/code><\/pre>\n<p>Im obigen Code ist die Variable <code>person2<\/code> vom Typ <code>EmployeeAndManager<\/code>, was bedeutet, dass sie ein Objekt sein muss, das sowohl den Typ <code>Employee<\/code> als auch <code>Manager<\/code> erf\u00fcllt.<\/p>\n<h3>7. Kompatibilit\u00e4t mit JavaScript<\/h3>\n<p>TypeScript ist als Obermenge von JavaScript konzipiert, was bedeutet, dass jeder g\u00fcltige JavaScript-Code auch g\u00fcltiger TypeScript-Code ist. Das macht die Integration von TypeScript in bestehende JavaScript-Projekte einfach, ohne dass der gesamte Code neu geschrieben werden muss.<\/p>\n<p>TypeScript baut auf JavaScript auf und f\u00fcgt optionale statische Typisierung und zus\u00e4tzliche Funktionen hinzu, aber du kannst trotzdem einfachen JavaScript-Code verwenden.<\/p>\n<p>Wenn du zum Beispiel eine bestehende JavaScript-Datei <strong>app.js<\/strong> hast, kannst du sie in <strong>app.ts<\/strong> umbenennen und nach und nach TypeScript-Funktionen nutzen, ohne den bestehenden JavaScript-Code zu \u00e4ndern. TypeScript ist weiterhin in der Lage, den JavaScript-Code zu verstehen und als g\u00fcltiges TypeScript zu kompilieren.<\/p>\n<p>Hier ist ein Beispiel daf\u00fcr, wie TypeScript eine nahtlose Integration mit JavaScript erm\u00f6glicht:<\/p>\n<pre><code class=\"language-js\">\/\/ app.js - Existing JavaScript code\nfunction greet(name) {\n  return \"Hello, \" + name + \"!\";\n}\n\nconsole.log(greet(\"John\")); \/\/ Output: Hello, John!<\/code><\/pre>\n<p>Du kannst die obige JavaScript-Datei in <strong>app.ts<\/strong> umbenennen und damit beginnen, TypeScript-Funktionen zu nutzen:<\/p>\n<pre><code class=\"language-typescript\">\/\/ app.ts - Same JavaScript code as TypeScript\nfunction greet(name: string): string {\n  return \"Hello, \" + name + \"!\";\n}\n\nconsole.log(greet(\"John\")); \/\/ Output: Hello, John!<\/code><\/pre>\n<p>Im obigen Beispiel f\u00fcgen wir dem Parameter name eine Type-Annotation hinzu und geben ihn als <code>string<\/code> an, was in TypeScript optional ist. Der Rest des Codes bleibt derselbe wie in JavaScript. TypeScript ist in der Lage, den JavaScript-Code zu verstehen und eine Typ\u00fcberpr\u00fcfung f\u00fcr die hinzugef\u00fcgte Type-Annotation durchzuf\u00fchren. Dadurch wird es einfach, TypeScript schrittweise in ein bestehendes JavaScript-Projekt zu integrieren.<\/p>\n<h2>Erste Schritte mit TypeScript<\/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>F\u00fcr dein JavaScript-Projekt musst du zun\u00e4chst ein Node-Projekt mit dem folgenden Befehl initialisieren, um eine package.json-Datei zu erstellen:<\/p>\n<pre><code class=\"language-bash\">npm init -y<\/code><\/pre>\n<p>Dann kannst du die TypeScript-Abh\u00e4ngigkeit installieren, TypeScript-Dateien mit der Erweiterung <strong>.ts<\/strong> erstellen und deinen TypeScript-Code schreiben.<\/p>\n<p>Sobald du deinen TypeScript-Code geschrieben hast, musst du ihn mit dem TypeScript-Compiler (<code>tsc<\/code>) in JavaScript kompilieren. Du kannst den folgenden Befehl in deinem Projektverzeichnis ausf\u00fchren:<\/p>\n<pre><code class=\"language-bash\">npx tsc .ts<\/code><\/pre>\n<p>Dieser kompiliert den TypeScript-Code in der angegebenen Datei zu JavaScript und erzeugt eine <strong>.js<\/strong>-Datei mit demselben Namen.<\/p>\n<p>Du kannst den kompilierten JavaScript-Code dann in deinem Projekt ausf\u00fchren, genauso wie du normalen JavaScript-Code ausf\u00fchren w\u00fcrdest. Du kannst Node.js verwenden, um den JavaScript-Code in einer <a href=\"https:\/\/kinsta.com\/de\/blog\/node-js-entwicklern-gehalt\/\">Node.js<\/a>-Umgebung auszuf\u00fchren, oder die kompilierte JavaScript-Datei in eine <a href=\"https:\/\/kinsta.com\/de\/blog\/was-ist-html\/\">HTML<\/a>-Datei einbinden und in einem Browser ausf\u00fchren.<\/p>\n<h2>Mit Interfaces arbeiten<\/h2>\n<p>Schnittstellen in TypeScript werden verwendet, um Vertr\u00e4ge oder Formen von Objekten zu definieren. Sie erm\u00f6glichen es dir, die Struktur oder Form festzulegen, der ein Objekt entsprechen soll.<\/p>\n<p>Schnittstellen definieren eine Reihe von Eigenschaften und\/oder Methoden, die ein Objekt haben muss, damit es als kompatibel mit der Schnittstelle gilt. Schnittstellen k\u00f6nnen verwendet werden, um Typkommentare f\u00fcr Objekte, Funktionsparameter und R\u00fcckgabewerte bereitzustellen, die eine bessere statische Typ\u00fcberpr\u00fcfung und Vorschl\u00e4ge zur Codevervollst\u00e4ndigung in <a href=\"https:\/\/kinsta.com\/de\/blog\/php-editor\/\">IDEs<\/a> erm\u00f6glichen.<\/p>\n<p>Hier ist ein Beispiel f\u00fcr eine Schnittstelle in TypeScript:<\/p>\n<pre><code class=\"language-typescript\">interface Person {\n  firstName: string;\n  lastName: string;\n  age: number;\n}<\/code><\/pre>\n<p>In diesem Beispiel definieren wir eine Schnittstelle <code>Person<\/code>, die drei Eigenschaften festlegt: <code>firstName<\/code> vom Typ <code>string<\/code>, <code>lastName<\/code> vom Typ <code>string<\/code> und <code>age<\/code> vom Typ <code>number<\/code>.<\/p>\n<p>Jedes Objekt, das diese drei Eigenschaften mit den angegebenen Typen hat, wird als kompatibel mit der Schnittstelle <code>Person<\/code> angesehen. Definieren wir nun Objekte, die der Schnittstelle <code>Person<\/code> entsprechen:<\/p>\n<pre><code class=\"language-typescript\">let person1: Person = {\n  firstName: \"John\",\n  lastName: \"Doe\",\n  age: 30\n};\n\nlet person2: Person = {\n  firstName: \"Jane\",\n  lastName: \"Doe\",\n  age: 25\n};<\/code><\/pre>\n<p>In diesem Beispiel erstellen wir zwei Objekte <code>person1<\/code> und <code>person2<\/code>, die mit der Schnittstelle <code>Person<\/code> kompatibel sind. Beide Objekte haben die erforderlichen Eigenschaften <code>firstName<\/code>, <code>lastName<\/code> und <code>age<\/code> mit den angegebenen Typen, so dass sie mit der Schnittstelle <code>Person<\/code> kompatibel sind.<\/p>\n<h3>Erweitern von Schnittstellen<\/h3>\n<p>Schnittstellen k\u00f6nnen auch erweitert werden, um neue Schnittstellen zu erstellen, die Eigenschaften von bestehenden Schnittstellen erben.<\/p>\n<p>Zum Beispiel:<\/p>\n<pre><code class=\"language-typescript\">interface Animal {\n  name: string;\n  sound: string;\n}\n\ninterface Dog extends Animal {\n  breed: string;\n}\n\nlet dog: Dog = {\n  name: \"Buddy\",\n  sound: \"Woof\",\n  breed: \"Labrador\"\n};<\/code><\/pre>\n<p>In diesem Beispiel definieren wir eine Schnittstelle <code>Animal<\/code> mit den Eigenschaften <code>name<\/code> und <code>sound<\/code>, und dann definieren wir eine neue Schnittstelle &#8222;Dog&#8220;, die die Schnittstelle <code>Animal<\/code> erweitert und eine neue Eigenschaft<code>breed<\/code> hinzuf\u00fcgt. Die Schnittstelle <code>Dog<\/code> erbt die Eigenschaften von der Schnittstelle <code>Animal<\/code>. Jedes Objekt, das der Schnittstelle <code>Dog<\/code> entspricht, muss also auch die Eigenschaften <code>name<\/code> und <code>sound<\/code> haben.<\/p>\n<h3>Optionale Eigenschaften<\/h3>\n<p>Schnittstellen k\u00f6nnen auch optionale Eigenschaften haben, die durch ein <code>?<\/code> nach dem Eigenschaftsnamen gekennzeichnet sind.<\/p>\n<p>Hier ist ein Beispiel:<\/p>\n<pre><code class=\"language-typescript\">interface Car {\n  make: string;\n  model: string;\n  year?: number;\n}\n\nlet car1: Car = {\n  make: \"Toyota\",\n  model: \"Camry\"\n};\n\nlet car2: Car = {\n  make: \"Honda\",\n  model: \"Accord\",\n  year: 2020\n};<\/code><\/pre>\n<p>In diesem Beispiel definieren wir eine Schnittstelle <code>Car<\/code> mit den Eigenschaften <code>make<\/code> und <code>model<\/code> und einer optionalen Eigenschaft <code>year<\/code>. Die Eigenschaft <code>year<\/code> ist nicht erforderlich, so dass Objekte, die der Schnittstelle <code>Car<\/code> entsprechen, sie haben k\u00f6nnen oder nicht.<\/p>\n<h2>Erweiterte Typpr\u00fcfung<\/h2>\n<p>TypeScript bietet auch erweiterte Optionen f\u00fcr die Typ\u00fcberpr\u00fcfung in <strong>tsconfig.json<\/strong>. Diese Optionen k\u00f6nnen die Typpr\u00fcfung deines TypeScript-Projekts verbessern und potenzielle Fehler zur Kompilierungszeit abfangen, was zu einem robusteren und zuverl\u00e4ssigeren Code f\u00fchrt.<\/p>\n<h3>1. strictNullChecks<\/h3>\n<p>Wenn diese Option auf <code>true<\/code> gesetzt ist, erzwingt TypeScript strikte Nullpr\u00fcfungen, d.h. Variablen k\u00f6nnen nicht den Wert <code>null<\/code> oder <code>undefined<\/code> haben, es sei denn, sie sind explizit mit dem Union-Typ <code>null<\/code> oder <code>undefined<\/code> angegeben.<\/p>\n<p>Ein Beispiel:<\/p>\n<pre><code class=\"language-json\">{\n  \"compilerOptions\": {\n    \"strictNullChecks\": true\n  }\n}<\/code><\/pre>\n<p>Wenn diese Option aktiviert ist, f\u00e4ngt TypeScript potenzielle <code>null<\/code> oder <code>undefined<\/code> Werte zur Kompilierungszeit ab und hilft so, Laufzeitfehler zu vermeiden, die durch den Zugriff auf Eigenschaften oder Methoden von <code>null<\/code> oder <code>undefined<\/code> Variablen verursacht werden.<\/p>\n<pre><code class=\"language-typescript\">\/\/ Example 1: Error - Object is possibly 'null'\nlet obj1: { prop: string } = null;\nconsole.log(obj1.prop);\n\n\/\/ Example 2: Error - Object is possibly 'undefined'\nlet obj2: { prop: string } = undefined;\nconsole.log(obj2.prop);<\/code><\/pre>\n<h3>2. strictFunctionTypes<\/h3>\n<p>Wenn diese Option auf <code>true<\/code> gesetzt ist, aktiviert TypeScript die strenge \u00dcberpr\u00fcfung von Funktionstypen, einschlie\u00dflich der Bi-Varianz von Funktionsparametern, wodurch sichergestellt wird, dass Funktionsargumente streng auf Typkompatibilit\u00e4t \u00fcberpr\u00fcft werden.<\/p>\n<p>Zum Beispiel:<\/p>\n<pre><code class=\"language-json\">{\n  \"compilerOptions\": {\n    \"strictFunctionTypes\": true\n  }\n}<\/code><\/pre>\n<p>Wenn diese Option aktiviert ist, erkennt TypeScript potenzielle Unstimmigkeiten zwischen Funktionsparametern zur Kompilierungszeit und hilft so, Laufzeitfehler durch die \u00dcbergabe falscher Argumente an Funktionen zu vermeiden.<\/p>\n<pre><code class=\"language-typescript\">\/\/ Example: Error - Argument of type 'number' is not assignable to parameter of type 'string'\nfunction greet(name: string) {\n  console.log(`Hello, ${name}!`);\n}\n\ngreet(123);<\/code><\/pre>\n<h3>3. noImplicitThis<\/h3>\n<p>Wenn diese Option auf <code>true<\/code> gesetzt ist, verbietet TypeScript die Verwendung von <code>this<\/code> mit einem impliziten Typ <code>any<\/code>. Dies hilft, m\u00f6gliche Fehler bei der Verwendung von <code>this<\/code> in Klassenmethoden zu erkennen.<\/p>\n<p>Zum Beispiel:<\/p>\n<pre><code class=\"language-json\">{\n  \"compilerOptions\": {\n    \"noImplicitThis\": true\n  }\n}<\/code><\/pre>\n<p>Wenn diese Option aktiviert ist, f\u00e4ngt TypeScript potenzielle Fehler ab, die durch die Verwendung von <code>this<\/code> ohne korrekte Typ-Annotationen oder Bindung in Klassenmethoden verursacht werden.<\/p>\n<pre><code class=\"language-typescript\">\/\/ Example: Error - The 'this' context of type 'void' is not assignable to method's 'this' of type 'MyClass'\nclass MyClass {\n  private prop: string;\n\n  constructor(prop: string) {\n    this.prop = prop;\n  }\n\n  printProp() {\n    console.log(this.prop);\n  }\n}\n\nlet obj = new MyClass(\"Hello\");\nsetTimeout(obj.printProp, 1000); \/\/ 'this' context is lost, potential error<\/code><\/pre>\n<h3>4. Ziel<\/h3>\n<p>Die Option <code>target<\/code> gibt die ECMAScript-Zielversion f\u00fcr deinen TypeScript-Code an. Sie bestimmt die Version von JavaScript, die der TypeScript-Compiler als Ausgabe erzeugen soll.<\/p>\n<p>Zum Beispiel:<\/p>\n<pre><code class=\"language-json\">{\n  \"compilerOptions\": {\n    \"target\": \"ES2018\"\n  }\n}<\/code><\/pre>\n<p>Wenn diese Option auf &#8222;<strong>ES2018<\/strong>&#8220; gesetzt ist, erzeugt TypeScript JavaScript-Code, der dem ECMAScript 2018 Standard entspricht.<\/p>\n<p>Das kann n\u00fctzlich sein, wenn du die neuesten JavaScript-Funktionen und -Syntax nutzen willst, aber auch die Abw\u00e4rtskompatibilit\u00e4t mit \u00e4lteren JavaScript-Umgebungen sicherstellen musst.<\/p>\n<h3>5. Modul<\/h3>\n<p>Die Option <code>module<\/code> gibt das Modulsystem an, das in deinem TypeScript-Code verwendet werden soll. G\u00e4ngige Optionen sind &#8222;<strong>CommonJS<\/strong>&#8222;, &#8222;<strong>AMD<\/strong>&#8222;, &#8222;<strong>ES6<\/strong>&#8222;, &#8222;<strong>ES2015<\/strong>&#8222;, usw. Damit wird festgelegt, wie deine TypeScript-Module in JavaScript-Module kompiliert werden.<\/p>\n<p>Zum Beispiel:<\/p>\n<pre><code class=\"language-json\">{\n  \"compilerOptions\": {\n    \"module\": \"ES6\"\n  }\n}<\/code><\/pre>\n<p>Wenn diese Option auf &#8222;<strong>ES6<\/strong>&#8220; gesetzt ist, erzeugt TypeScript JavaScript-Code, der die ECMAScript 6 Modul-Syntax verwendet.<\/p>\n<p>Das kann n\u00fctzlich sein, wenn du mit einer modernen JavaScript-Umgebung arbeitest, die ECMAScript 6-Module unterst\u00fctzt, z. B. in einer Frontend-Anwendung, die einen Modul-Bundler wie Webpack oder Rollup verwendet.<\/p>\n<h3>6. noUnusedLocals und noUnusedParameters<\/h3>\n<p>Diese Optionen erm\u00f6glichen es TypeScript, unbenutzte lokale Variablen bzw. Funktionsparameter abzufangen.<\/p>\n<p>Wenn sie auf <code>true<\/code> gesetzt sind, gibt TypeScript Kompilierungsfehler f\u00fcr alle lokalen Variablen oder Funktionsparameter aus, die zwar deklariert, aber nicht im Code verwendet werden.<\/p>\n<p>Ein Beispiel:<\/p>\n<pre><code class=\"language-json\">{\n  \"compilerOptions\": {\n    \"noUnusedLocals\": true,\n    \"noUnusedParameters\": true\n  }\n}<\/code><\/pre>\n<p>Dies sind nur einige weitere Beispiele f\u00fcr erweiterte Optionen zur Typ\u00fcberpr\u00fcfung in der <strong>tsconfig.json<\/strong>-Datei von TypeScript. In der <a href=\"https:\/\/www.typescriptlang.org\/tsconfig\">offiziellen Dokumentation findest du noch mehr<\/a>.<\/p>\n<h2>Best Practices und Tipps f\u00fcr die Verwendung von TypeScript<\/h2>\n<h3>1. Typen f\u00fcr Variablen, Funktionsparameter und R\u00fcckgabewerte richtig annotieren<\/h3>\n<p>Einer der Hauptvorteile von TypeScript ist sein starkes Typisierungssystem, mit dem du die Typen von Variablen, Funktionsparametern und R\u00fcckgabewerten explizit angeben kannst.<\/p>\n<p>Das verbessert die Lesbarkeit des Codes, f\u00e4ngt potenzielle typbezogene Fehler fr\u00fchzeitig ab und erm\u00f6glicht eine intelligente Codevervollst\u00e4ndigung in IDEs.<\/p>\n<p>Hier ist ein Beispiel:<\/p>\n<pre><code class=\"language-typescript\">\/\/ Properly annotating variable types\nlet age: number = 25;\nlet name: string = \"John\";\nlet isStudent: boolean = false;\nlet scores: number[] = [98, 76, 89];\nlet person: { name: string, age: number } = { name: \"John\", age: 25 };\n\n\/\/ Properly annotating function parameter and return types\nfunction greet(name: string): string {\n  return \"Hello, \" + name;\n}\n\nfunction add(a: number, b: number): number {\n  return a + b;\n}<\/code><\/pre>\n<h3>2. TypeScripts erweiterte Typfunktionen effektiv nutzen<\/h3>\n<p>TypeScript verf\u00fcgt \u00fcber eine Vielzahl von fortgeschrittenen Typfunktionen wie Generics, Unions, \u00dcberschneidungen, bedingte Typen und gemappte Typen. Diese Funktionen k\u00f6nnen dir helfen, flexibleren und wiederverwendbaren Code zu schreiben.<\/p>\n<p>Hier ist ein Beispiel:<\/p>\n<pre><code class=\"language-typescript\">\/\/ Using generics to create a reusable function\nfunction identity(value: T): T {\n  return value;\n}\n\nlet num: number = identity(42); \/\/ inferred type: number\nlet str: string = identity(\"hello\"); \/\/ inferred type: string\n\n\/\/ Using union types to allow multiple types\nfunction display(value: number | string): void {\n  console.log(value);\n}\n\ndisplay(42); \/\/ valid\ndisplay(\"hello\"); \/\/ valid\ndisplay(true); \/\/ error<\/code><\/pre>\n<h3>3. Wartbaren und skalierbaren Code mit TypeScript schreiben<\/h3>\n<p>TypeScript f\u00f6rdert das Schreiben von wartbaren und skalierbarerem Code, indem es Funktionen wie Schnittstellen, Klassen und Module bereitstellt.<\/p>\n<p>Hier ist ein Beispiel:<\/p>\n<pre><code class=\"language-typescript\">\/\/ Using interfaces for defining contracts\ninterface Person {\n  name: string;\n  age: number;\n}\n\nfunction greet(person: Person): string {\n  return \"Hello, \" + person.name;\n}\n\nlet john: Person = { name: \"John\", age: 25 };\nconsole.log(greet(john)); \/\/ \"Hello, John\"\n\n\/\/ Using classes for encapsulation and abstraction\nclass Animal {\n  constructor(private name: string, private species: string) {}\n\n  public makeSound(): void {\n    console.log(\"Animal is making a sound\");\n  }\n}\n\nclass Dog extends Animal {\n  constructor(name: string, breed: string) {\n    super(name, \"Dog\");\n    this.breed = breed;\n  }\n\n  public makeSound(): void {\n    console.log(\"Dog is barking\");\n  }\n}\n\nlet myDog: Dog = new Dog(\"Buddy\", \"Labrador\");\nmyDog.makeSound(); \/\/ \"Dog is barking\"<\/code><\/pre>\n<h3>4. Nutzung von TypeScripts Tooling und IDE-Unterst\u00fctzung<\/h3>\n<p>TypeScript verf\u00fcgt \u00fcber eine hervorragende Tooling- und IDE-Unterst\u00fctzung mit Funktionen wie Autovervollst\u00e4ndigung, Typinferenz, Refactoring und Fehlerpr\u00fcfung.<\/p>\n<p>Nutze diese Funktionen, um deine Produktivit\u00e4t zu steigern und potenzielle Fehler fr\u00fchzeitig im Entwicklungsprozess zu erkennen. Achte darauf, dass du eine TypeScript-f\u00e4hige IDE wie Visual Studio Code verwendest und das <a href=\"https:\/\/marketplace.visualstudio.com\/items?itemName=ms-vscode.vscode-typescript-next\">TypeScript-Plugin<\/a> installierst, um den Code besser bearbeiten zu k\u00f6nnen.<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/04\/vscode-extension-typescript.jpg\" alt=\"VS Code TypeScript-Erweiterung\" width=\"1600\" height=\"877\"><figcaption class=\"wp-caption-text\">VS Code TypeScript-Erweiterung<\/figcaption><\/figure>\n\n<h2>Zusammenfassung<\/h2>\n<p>TypeScript bietet eine breite Palette an leistungsstarken Funktionen, die deine Webentwicklungsprojekte erheblich verbessern k\u00f6nnen.<\/p>\n<p>Die starke statische Typisierung, das fortschrittliche Typsystem und die objektorientierten Programmierf\u00e4higkeiten machen es zu einem wertvollen Werkzeug f\u00fcr das Schreiben von wartbarem, skalierbarem und robustem Code. Die Werkzeuge und die IDE-Unterst\u00fctzung von TypeScript sorgen au\u00dferdem f\u00fcr eine nahtlose Entwicklungserfahrung.<\/p>\n<p>Wenn du TypeScript und seine M\u00f6glichkeiten kennenlernen m\u00f6chtest, kannst du das mit dem <a href=\"https:\/\/sevalla.com\/application-hosting\/\">Application Hosting von Kinsta<\/a> noch heute tun.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In der heutigen schnelllebigen digitalen Welt ist JavaScript zur bevorzugten Sprache f\u00fcr die Entwicklung dynamischer Webanwendungen geworden. Die dynamische Typisierung von JavaScript kann jedoch manchmal zu &#8230;<\/p>\n","protected":false},"author":287,"featured_media":62025,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[952],"class_list":["post-62024","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","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 TypeScript? Ein umfassender Leitfaden - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"In diesem umfassenden Leitfaden erf\u00e4hrst du alles, was du \u00fcber TypeScript wissen musst, einschlie\u00dflich seiner Funktionen, Vorteile und Best Practices.\" \/>\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\/was-ist-typescript\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Was ist TypeScript? Ein umfassender Leitfaden\" \/>\n<meta property=\"og:description\" content=\"In diesem umfassenden Leitfaden erf\u00e4hrst du alles, was du \u00fcber TypeScript wissen musst, einschlie\u00dflich seiner Funktionen, Vorteile und Best Practices.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/de\/blog\/was-ist-typescript\/\" \/>\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-05-24T10:59:33+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-01T19:15:50+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/05\/what-is-typescript.jpeg\" \/>\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=\"In diesem umfassenden Leitfaden erf\u00e4hrst du alles, was du \u00fcber TypeScript wissen musst, einschlie\u00dflich seiner Funktionen, Vorteile und Best Practices.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/05\/what-is-typescript.jpeg\" \/>\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=\"17\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/was-ist-typescript\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/was-ist-typescript\/\"},\"author\":{\"name\":\"Joel Olawanle\",\"@id\":\"https:\/\/kinsta.com\/de\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07\"},\"headline\":\"Was ist TypeScript? Ein umfassender Leitfaden\",\"datePublished\":\"2023-05-24T10:59:33+00:00\",\"dateModified\":\"2025-10-01T19:15:50+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/was-ist-typescript\/\"},\"wordCount\":2778,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/de\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/was-ist-typescript\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/05\/what-is-typescript.jpeg\",\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/de\/blog\/was-ist-typescript\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/was-ist-typescript\/\",\"url\":\"https:\/\/kinsta.com\/de\/blog\/was-ist-typescript\/\",\"name\":\"Was ist TypeScript? Ein umfassender Leitfaden - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/was-ist-typescript\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/was-ist-typescript\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/05\/what-is-typescript.jpeg\",\"datePublished\":\"2023-05-24T10:59:33+00:00\",\"dateModified\":\"2025-10-01T19:15:50+00:00\",\"description\":\"In diesem umfassenden Leitfaden erf\u00e4hrst du alles, was du \u00fcber TypeScript wissen musst, einschlie\u00dflich seiner Funktionen, Vorteile und Best Practices.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/de\/blog\/was-ist-typescript\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/de\/blog\/was-ist-typescript\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/was-ist-typescript\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/05\/what-is-typescript.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/05\/what-is-typescript.jpeg\",\"width\":3042,\"height\":1521},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/de\/blog\/was-ist-typescript\/#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 TypeScript? Ein umfassender Leitfaden\"}]},{\"@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 TypeScript? Ein umfassender Leitfaden - Kinsta\u00ae","description":"In diesem umfassenden Leitfaden erf\u00e4hrst du alles, was du \u00fcber TypeScript wissen musst, einschlie\u00dflich seiner Funktionen, Vorteile und Best Practices.","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\/was-ist-typescript\/","og_locale":"de_DE","og_type":"article","og_title":"Was ist TypeScript? Ein umfassender Leitfaden","og_description":"In diesem umfassenden Leitfaden erf\u00e4hrst du alles, was du \u00fcber TypeScript wissen musst, einschlie\u00dflich seiner Funktionen, Vorteile und Best Practices.","og_url":"https:\/\/kinsta.com\/de\/blog\/was-ist-typescript\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/","article_published_time":"2023-05-24T10:59:33+00:00","article_modified_time":"2025-10-01T19:15:50+00:00","og_image":[{"width":3042,"height":1521,"url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/05\/what-is-typescript.jpeg","type":"image\/jpeg"}],"author":"Joel Olawanle","twitter_card":"summary_large_image","twitter_description":"In diesem umfassenden Leitfaden erf\u00e4hrst du alles, was du \u00fcber TypeScript wissen musst, einschlie\u00dflich seiner Funktionen, Vorteile und Best Practices.","twitter_image":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/05\/what-is-typescript.jpeg","twitter_creator":"@olawanle_joel","twitter_site":"@Kinsta_DE","twitter_misc":{"Verfasst von":"Joel Olawanle","Gesch\u00e4tzte Lesezeit":"17\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/de\/blog\/was-ist-typescript\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/de\/blog\/was-ist-typescript\/"},"author":{"name":"Joel Olawanle","@id":"https:\/\/kinsta.com\/de\/#\/schema\/person\/efa7de30245ca15be5ce1dcacff89c07"},"headline":"Was ist TypeScript? Ein umfassender Leitfaden","datePublished":"2023-05-24T10:59:33+00:00","dateModified":"2025-10-01T19:15:50+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/de\/blog\/was-ist-typescript\/"},"wordCount":2778,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/de\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/de\/blog\/was-ist-typescript\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/05\/what-is-typescript.jpeg","inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/de\/blog\/was-ist-typescript\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/de\/blog\/was-ist-typescript\/","url":"https:\/\/kinsta.com\/de\/blog\/was-ist-typescript\/","name":"Was ist TypeScript? Ein umfassender Leitfaden - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/de\/blog\/was-ist-typescript\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/de\/blog\/was-ist-typescript\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/05\/what-is-typescript.jpeg","datePublished":"2023-05-24T10:59:33+00:00","dateModified":"2025-10-01T19:15:50+00:00","description":"In diesem umfassenden Leitfaden erf\u00e4hrst du alles, was du \u00fcber TypeScript wissen musst, einschlie\u00dflich seiner Funktionen, Vorteile und Best Practices.","breadcrumb":{"@id":"https:\/\/kinsta.com\/de\/blog\/was-ist-typescript\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/de\/blog\/was-ist-typescript\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinsta.com\/de\/blog\/was-ist-typescript\/#primaryimage","url":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/05\/what-is-typescript.jpeg","contentUrl":"https:\/\/kinsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/05\/what-is-typescript.jpeg","width":3042,"height":1521},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/de\/blog\/was-ist-typescript\/#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 TypeScript? Ein umfassender Leitfaden"}]},{"@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\/62024","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=62024"}],"version-history":[{"count":6,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/62024\/revisions"}],"predecessor-version":[{"id":62665,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/posts\/62024\/revisions\/62665"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/62024\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/62024\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/62024\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/62024\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/62024\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/62024\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/62024\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/62024\/translations\/es"},{"href":"https:\/\/kinsta.com\/de\/wp-json\/kinsta\/v1\/posts\/62024\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/media\/62025"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/media?parent=62024"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/tags?post=62024"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/de\/wp-json\/wp\/v2\/topic?post=62024"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}