Grundlagen von TypeScript
Dieser Artikel erklärt die Grundlagen von TypeScript.
YouTube Video
Ausführung von "Hallo Welt!"
Zuerst führen wir das klassische "Hallo Welt!" Beispiel in TypeScript mit Visual Studio Code aus.
npm install -g typescript
Installieren Sie typescript
mit dem Befehl npm
.
Erstellen Sie eine Datei tsconfig.json
.
1{
2 "compilerOptions": {
3 "target": "ES6",
4 "module": "CommonJS",
5 "outDir": "out",
6 "sourceMap": true
7 }
8}
Erstellen Sie eine Datei .vscode/launch.json
, um das Ausführen der Datei main.ts
in Visual Studio Code zu ermöglichen.
1{
2 "version": "0.2.0",
3 "configurations": [
4 {
5 "type": "node",
6 "request": "launch",
7 "name": "Launch Program",
8 "skipFiles": [
9 "<node_internals>/**"
10 ],
11 "program": "${workspaceFolder}/main.ts",
12 "preLaunchTask": "tsc: build - tsconfig.json",
13 "outFiles": [
14 "${workspaceFolder}/out/main.js"
15 ]
16 }
17 ]
18}
Erstellen Sie eine Datei main.ts
, die "Hallo Welt!" anzeigt. Sie können sie in Visual Studio Code ausführen, indem Sie die Taste F5
drücken.
1console.log("Hello World!");
Durch diese Konfiguration können Sie TypeScript-Dateien innerhalb von VSCode ausführen.
Übersicht über TypeScript
TypeScript (TS) ist eine von Microsoft entwickelte Obermenge von JavaScript. TypeScript unterstützt statische Typisierung, was robusteren und besser wartbaren Code ermöglicht.
Statische Typisierung
- TypeScript fügt JavaScript Typen hinzu und führt Typprüfungen zur Kompilierungszeit durch. Dies ermöglicht das Verhindern von typbedingten Fehlern im Voraus.
1let message: string = "Hello, TypeScript";
2console.log(message);
Kompilierung
- Da TypeScript nicht direkt in einem Browser ausgeführt werden kann, muss es nach JavaScript transpiliert (kompiliert) werden. Verwenden Sie
tsc
(TypeScript Compiler), um TS-Dateien in JS-Dateien umzuwandeln.
Optionale Typanmerkungen
- TypeScript führt auch Typinferenz durch, ermöglicht es Ihnen jedoch, Typen bei Bedarf explizit anzugeben. Dies verbessert die Lesbarkeit und Zuverlässigkeit des Codes.
1function greet(name: string): string {
2 return `Hello, ${name}`;
3}
4console.log(greet('John'));
Schnittstellen
- TypeScript bietet
Interface
, um die Struktur von Objekten zu definieren. Dies ermöglicht eine strikte Verwaltung der Objektstruktur.
1interface Person {
2 name: string;
3 age: number;
4}
5const user: Person = { name: "John", age: 30 };
6console.log(user.name);
Klassen
- TypeScript bietet Erweiterungen zur Klassensyntax von JavaScript und unterstützt Vererbung, Zugriffmodifikatoren (
public
,private
,protected
) und abstrakte Klassen.
1class Animal {
2 protected name: string;
3 constructor(name: string) {
4 this.name = name;
5 }
6 speak(): void {
7 console.log(`${this.name} makes a sound.`);
8 }
9}
10
11class Dog extends Animal {
12 speak(): void {
13 console.log(`${this.name} barks.`);
14 }
15}
16const animal = new Animal('Generic Animal');
17animal.speak();
18
19const dog = new Dog('Buddy');
20dog.speak();
Generika
- In TypeScript können Sie wiederverwendbaren und typsicheren Code mit Generika schreiben.
1function identity<T>(arg: T): T {
2 return arg;
3}
4console.log(identity<string>("Hello Generics"));
Ökosystem
- TypeScript ist vollständig kompatibel mit dem JavaScript-Ökosystem und kann vorhandenen JavaScript-Code unverändert verwenden. Darüber hinaus ist es in beliebte Bibliotheken wie React und Node.js integriert.
Leistungsstarke Entwicklerwerkzeuge
- TypeScript bietet erweiterte Funktionen wie Autovervollständigung, Refaktorisierungsunterstützung und Fehlerprüfung in Editoren wie VSCode.
TypeScript ist besonders nützlich, um die Zuverlässigkeit zu verbessern und die Produktivität der Entwickler in großen Projekten zu steigern.
Variablen in TypeScript
Dies erklärt die grundlegenden Konzepte und die Verwendung von Variablen in TypeScript.
Variablendeklaration
In TypeScript werden Variablen mit drei Schlüsselwörtern deklariert: let
, const
und var
. Jedes Schlüsselwort hat unterschiedliche Eigenschaften.
Beispiel für let
:
let
hat Block-Scope (gültig nur innerhalb geschweifter Klammern {}
). Werte können später neu zugewiesen werden.
1let count: number = 10;
2console.log(count); // Outputs: 10
3
4count = 20;
5console.log(count); // Outputs: 20
Beispiel für const
:
const
kann nicht neu zugewiesen werden, daher kann der einmal zugewiesene Wert nicht geändert werden. Der Inhalt von Objekten und Arrays kann jedoch geändert werden.
1const pi: number = 3.14;
2console.log(pi); // Outputs: 3.14
3
4// pi = 3.14159; // Error: Reassignment is not allowed
5
6const fruits: string[] = ["apple", "banana"];
7fruits.push("orange");
8console.log(fruits); // Outputs: ["apple", "banana", "orange"]
Beispiel für var
:
var
hat Funktions-Scope und kann neu zugewiesen werden. Wenn Block-Scope ignoriert wird, kann dies zu unerwartetem Verhalten im Vergleich zu let
oder const
führen.
1var message: string = "Hello, world!";
2console.log(message); // Outputs: Hello, world!
3
4message = "Hello, TypeScript!";
5console.log(message); // Outputs: Hello, TypeScript!
6
7// (`var` ignores block scope)
8if (true) {
9 var localMessage = "Hello again!";
10}
11console.log(localMessage); // "Hello again!"
Typannotationen
In TypeScript können Sie Typen für Variablen explizit annotieren. Typinferenz wird ebenfalls unterstützt, aber Typannotationen sind in komplexen Szenarien nützlich.
1let isDone: boolean = false;
2console.log(isDone); // Outputs: false
3
4let userName: string = "Alice";
5console.log(userName); // Outputs: Alice
Nicht initialisierte Variablen
Wenn eine Variable ohne Initialisierung deklariert wird, wird standardmäßig undefined
zugewiesen. Eine mit let
deklarierte Variable muss explizit auf undefined
gesetzt oder undefined
in ihrem Typ enthalten sein, wenn sie nicht initialisiert wird.
1let uninitialized: number | undefined;
2console.log(uninitialized); // Outputs: undefined
3
4uninitialized = 5;
5console.log(uninitialized); // Outputs: 5
Variablenbereich
let
und const
haben Blockscope, daher sind sie nur innerhalb desselben Blocks gültig.
1if (true) {
2 let blockScoped: string = "Block Scoped";
3 console.log(blockScoped); // Outputs: Block Scoped
4}
5// console.log(blockScoped); // Error: blockScoped is out of scope
Variable Hoisting
Da TypeScript eine Obermenge von JavaScript ist, übernimmt es das Hoisting-Feature von JavaScript. Hoisting bezieht sich auf das Verhalten, bei dem Variablen- und Funktionsdeklarationen so behandelt werden, als ob sie an den Anfang ihres Gültigkeitsbereichs gehoben würden. Allerdings wird nur die Deklaration gehoben, während die Initialisierung an Ort und Stelle bleibt. Variablen, die mit var
deklariert wurden, werden gehoben, aber die Verwendung von let
oder const
vor der Deklaration führt zu einem Fehler.
1console.log(a); // undefined
2var a = 10;
3console.log(a); // 10
- In diesem Fall werden Variablen, die mit
var
deklariert wurden, gehoben, und ihre Werte werden ausgegeben.
1console.log(b); // ReferenceError
2let b = 20;
- Variablen, die mit
let
deklariert wurden, werden nicht gehoben, was zu einem Fehler führt.
Zusammenfassung
Das Folgende ist eine Zusammenfassung von let
, const
und var
.
let
ist neu zuweisbar und hat Block-Scope.const
ist nicht neu zuweisbar und hat Block-Scope.var
ist neu zuweisbar und hat Funktions-Scope.- Alle erlauben explizite Typannotationen zur Festlegung von Variablentypen.
Escape-Zeichen in TypeScript
Escape-Zeichen werden verwendet, wenn bestimmte Zeichen nicht direkt eingegeben werden können oder um Zeichen darzustellen, die in einem String eine besondere Bedeutung haben. In TypeScript werden Escape-Zeichen verwendet, um Steuerzeichen oder Sonderzeichen darzustellen.
Verwenden Sie zum Beispiel \n
, um eine Nachricht mit einem Zeilenumbruch auszugeben.
1const message: string = "Hello,\nWorld!";
2console.log(message);
3// Output:
4// Hello,
5// World!
Spezialzeichen escapen
Escape-Zeichen sind auch nützlich, wenn Sonderzeichen in einem String enthalten sein sollen. Zum Beispiel möchten Sie möglicherweise Anführungszeichen oder einfache Anführungszeichen direkt in einem String verwenden.
1const singleQuoteExample: string = 'It\'s a beautiful day!';
2console.log(singleQuoteExample);
3// Output: It's a beautiful day!
4
5const doubleQuoteExample: string = "He said, \"Welcome!\"";
6console.log(doubleQuoteExample);
7// Output: He said, "Welcome!"
Den Backslash selbst escapen
Um einen Backslash in einem String zu verwenden, müssen Sie ihn als doppelten Backslash schreiben.
1const path: string = "C:\\Program Files\\MyApp";
2console.log(path);
3// Output: C:\Program Files\MyApp
Unicode- und Hexadezimal-Escapes
In TypeScript können Unicode-Codepunkte mithilfe von Escape-Sequenzen dargestellt werden.
Unicode-Escape-Sequenz
Unicode-Zeichen können Sie darstellen, indem Sie eine vierstellige hexadezimale Zahl nach \u
angeben.
1const smileyFace: string = "\u263A";
2console.log(smileyFace);
3// Output: ☺ (Copyright Mark)
Hexadezimal-Escape
Bestimmte Zeichen können Sie darstellen, indem Sie eine zweistellige hexadezimale Zahl nach \x
angeben.
1const letterA: string = "\x41";
2console.log(letterA);
3// Output: A
Template-Literale und Escapes
Template-Literale werden durch Einschließen in Backticks definiert und bieten eine einfache Möglichkeit, eingebettete Ausdrücke oder mehrzeilige Zeichenketten zu erstellen. Reguläre Escape-Zeichen können direkt in Template-Literalen verwendet werden.
1const multiLine: string = `This is
2a multi-line
3string.`;
4console.log(multiLine);
5// Output:
6// This is
7// a multi-line
8// string.
Sonderfälle
In TypeScript kann die Verwendung ungültiger Escape-Sequenzen in einem String zu einem Syntaxfehler führen. Es ist daher wichtig zu überprüfen, ob die Escape-Zeichen gültig sind.
1// Invalid escape sequence
2const invalidString: string = "\xZZ"; // Error
Praktische Anwendungsbeispiele
Hier ist ein Beispiel für die Konstruktion eines komplexen Strings mit Escape-Zeichen.
1const jsonExample: string = "{\n\t\"name\": \"John Doe\",\n\t\"age\": 30\n}";
2console.log(jsonExample);
3// Output:
4// {
5// "name": "John Doe",
6// "age": 30
7// }
In diesem Beispiel wird \n
für einen Zeilenumbruch und \t
zur Einfügung einer Einrückung verwendet. Dadurch wird die JSON-Struktur leichter lesbar.
Zusammenfassung
Escape-Zeichen sind sehr wichtig, wenn man in TypeScript mit Strings arbeitet. Wenn Sie Sonderzeichen oder Steuerzeichen in einen String einfügen möchten, können Sie ausdrucksstarke Strings erstellen, indem Sie geeignete Escape-Sequenzen verwenden. Das Verstehen und korrekte Verwenden von Escape-Zeichen kann die Lesbarkeit und Wartbarkeit des Codes verbessern.
Versionen von TypeScript
Lassen Sie uns hier einen Überblick über die TypeScript-Versionen verschaffen.
-
TypeScript 1.0 (2014)
Die erste stabile Version von TypeScript. Grundlegende Funktionen wie Typisierung, Klassen und Module wurden eingeführt.
-
TypeScript 2.0 (2016)
Non-nullable Types
,Control Flow Analysis
,Read-only Properties
und derNever
-Typ wurden eingeführt, wodurch die Typinferenz verbessert wurde. -
TypeScript 3.0 (2018)
Ein flexibleres Typsystem wurde eingeführt, mit Funktionen wie
Project References
, Erweiterungen vonTuple Types
und Verbesserungen anRest Parameters
. -
TypeScript 4.0 (2020)
Funktionen wie
Variadic Tuple Types
, Verbesserungen des Editors, erweiterte Typinferenz undLabelled Tuple Elements
wurden hinzugefügt, um die Entwicklungserfahrung zu verbessern. -
TypeScript 4.1 (2020)
Template Literal Types
wurden eingeführt und machen die Manipulation von String-Typen leistungsfähiger. -
TypeScript 4.3 (2021)
Die Hinzufügung des
Override
-Schlüsselworts, Verbesserungen bei Zugriffmodifikatoren in Konstruktoren und eine verbesserte Typunterstützung fürWeakMap
undWeakSet
. -
TypeScript 4.5 (2021)
Der
Awaited
-Typ,ModuleSuffixes
und eine verbesserte Kompatibilität mit ECMAScript-Modulen wurden hinzugefügt. -
TypeScript 5.0 (2023)
Die Standardisierung von
Decorators
, die Verbesserung der Projekt-Baugeschwindigkeit, die Erweiterung des Typsystems und die Unterstützung der neuesten ECMAScript-Features wurden eingeführt.
TypeScript entwickelt sich ständig weiter, mit mehreren Versionen pro Jahr, die neue Funktionen und Verbesserungen einführen.
Sie können den obigen Artikel mit Visual Studio Code auf unserem YouTube-Kanal verfolgen. Bitte schauen Sie sich auch den YouTube-Kanal an.