Funktionen in TypeScript
Dieser Artikel erklärt Funktionen in TypeScript.
YouTube Video
Funktionen in TypeScript
Funktionen in TypeScript sind JavaScript-Funktionen mit zusätzlichen Typanmerkungen. In TypeScript können Sie robusteren Code schreiben, indem Sie die Typen von Eingaben (Parametern) und Ausgaben (Rückgabewerten) für Funktionen klar definieren. Im Folgenden stellen wir die grundlegenden Methoden zur Definition von Funktionen und einige Merkmale von Funktionen in TypeScript vor.
Grundlegende Funktionsdefinition
1function add(x: number, y: number): number {
2 return x + y;
3}
4
5console.log(add(5, 10)); // 15
- Die Funktion
add
nimmt zwei Argumente vom Typnumber
entgegen und gibt einen Wert vom Typnumber
zurück. - Sie nimmt zwei Argumente,
x
undy
, beide vom Typnumber
, deren Typen explizit angegeben sind. - Der Rückgabetyp ist ebenfalls als
: number
angegeben.
Anonyme Funktionen (Funktionsausdrücke)
Anonyme Funktionen und Funktionsausdrücke können auch in TypeScript verwendet werden. Typen können auf die gleiche Weise annotiert werden.
1const multiply = function (x: number, y: number): number {
2 return x * y;
3};
4
5console.log(multiply(3, 4)); // 12
- Sie können einer Variablen eine anonyme Funktion zuweisen und diese später aufrufen.
1const factorial = function fact(n: number): number {
2 if (n <= 1) return 1;
3 return n * fact(n - 1); // Can call itself recursively
4};
5
6console.log(factorial(5)); // 120
- Sie können einen benannten Funktionsausdruck verwenden, um rekursive Aufrufe zu ermöglichen.
Pfeilfunktionen (Arrow Functions)
Typanmerkungen können auch bei Pfeilfunktionen verwendet werden.
1const subtract = (x: number, y: number): number => {
2 return x - y;
3};
4
5console.log(subtract(10, 4)); // 6
Dieser Code definiert eine Pfeilfunktion subtract
mit Typannotationen, die zwei Zahlen als Argumente nimmt und deren Differenz zurückgibt.
Optionale und Standardparameter
Parameter können optional gemacht oder mit Standardwerten versehen werden.
Optionale Parameter
Indem Sie ?
hinter den Parameter setzen, machen Sie ihn optional.
1function greet(name?: string): string {
2 return name ? `Hello, ${name}` : "Hello!";
3}
4
5console.log(greet()); // Hello!
6console.log(greet("Alice")); // Hello, Alice
Dieser Code akzeptiert ein optionales Argument; wenn das Argument angegeben wird, begrüßt er mit dem Namen, andernfalls gibt er eine allgemeine Begrüßung zurück.
Standardparameter
Sie können auch Standardwerte für Parameter festlegen.
1function greetWithDefault(name: string = "Guest"): string {
2 return `Hello, ${name}`;
3}
4
5console.log(greetWithDefault()); // Hello, Guest
6console.log(greetWithDefault("Bob")); // Hello, Bob
Diese Funktion verwendet "Gast"
als Standardwert, wenn kein Argument übergeben wird, und begrüßt mit dem angegebenen oder dem Standardnamen.
Funktionstypedefinition
Es ist auch möglich, den Typ der Funktion selbst zu definieren. Zum Beispiel wird dies verwendet, wenn eine Funktion als Argument übergeben wird.
1type Operation = (x: number, y: number) => number;
2
3const addOperation: Operation = (x, y) => x + y;
4const multiplyOperation: Operation = (x, y) => x * y;
5
6console.log(addOperation(2, 3)); // 5
7console.log(multiplyOperation(2, 3)); // 6
Dieser Code definiert einen Funktionstyp Operation
, der zwei Zahlen entgegennimmt und eine Zahl zurückgibt; anschließend werden damit Additions- und Multiplikationsfunktionen erstellt und ausgeführt.
Wenn es keinen Rückgabewert gibt (Typ void
)
Für Funktionen ohne Rückgabewert geben Sie den Typ void
an.
1function logMessage(message: string): void {
2 console.log(message);
3}
4
5logMessage("This is a message."); // This is a message.
Dieser Code definiert eine void
-Funktion logMessage
, die eine Zeichenkettennachricht entgegennimmt und sie auf der Konsole ausgibt, ohne einen Wert zurückzugeben.
Callback-Funktion
Eine Funktion als Argument an eine andere Funktion zu übergeben und sie später ausführen zu lassen, nennt man eine Callback-Funktion. Sie wird häufig bei asynchroner Verarbeitung und Ereignisbehandlung verwendet.
1function processData(callback: (data: string) => void): void {
2 const data: string = "Processed Data";
3 callback(data);
4}
5
6processData((result: string): void => {
7 console.log(result);
8});
In diesem Beispiel wird eine Funktion, die einen Wert auf die Konsole ausgibt, als Callback-Funktion übergeben.
Alternativ können Sie einen Callback-Typ mit type
oder interface
definieren.
1type Callback = (data: string) => void;
2
3function processData(callback: Callback): void {
4 const data: string = "Processed Data";
5 callback(data);
6}
7
8processData((result: string): void => {
9 console.log(result);
10});
Das Definieren eines Callback-Typs mit type
oder interface
verbessert die Wiederverwendbarkeit.
Funktionsüberladung
Funktionsüberladung ermöglicht es Ihnen, Funktionen mit demselben Namen, aber unterschiedlichen Parameterlisten zu definieren. In TypeScript können Sie mehrere Funktionen mit demselben Namen definieren und je nach Typ und Anzahl der Parameter unterschiedliche Operationen durchführen.
1// Overload Signature
2function double(value: number): number;
3function double(value: string): string;
4
5// Implementation Signature
6function double(value: number | string): number | string {
7 if (typeof value === "number") {
8 return value * 2;
9 } else if (typeof value === "string") {
10 return value + value;
11 }
12}
13
14console.log(double(10)); // 20
15console.log(double("Hello")); // HelloHello
In TypeScript wird Überladung wie folgt erreicht:.
-
Überladungssignatur
- Definiert, wie die Funktion verwendet werden kann (ihre Signatur). Durch mehrmaliges Festlegen dieser Signatur wird die Überladung möglich.
-
Implementierungssignatur
- Implementiert den eigentlichen Funktionskörper. Dieser Teil wird nur einmal definiert und verarbeitet alle in den Überladungssignaturen angegebenen Fälle.
Regeln für die Überladung
Die folgenden Regeln gelten für die Funktionsüberladung:.
-
Reihenfolge der Überladungssignatur-Definitionen
- Da die Auswertung von oben nach unten erfolgt, wird empfohlen, zuerst spezifische Typen und anschließend allgemeinere Typen zu definieren.
-
Kompatibilität der Implementierungssignatur
- Die Implementationssignatur muss mit den Argumenten und Rückgabewerten aller Überladungssignaturen kompatibel sein.
-
Details in Überladungssignaturen angeben
- Die Implementationssignatur neigt dazu, mehrdeutig zu sein, daher sollten Details in den Überladungssignaturen angegeben werden.
- Wenn nur die Implementationssignatur definiert ist, wird die Typinferenz für die Funktion unzureichend sein.
Zusammenfassung
Funktionen in TypeScript haben die folgenden Eigenschaften.
- Typanmerkungen
- Durch die Angabe von Typen für Argumente und Rückgabewerte können Sie sichereren Code schreiben.
- Anonyme Funktionen und Pfeilfunktionen
- Sie können wie in JavaScript verwendet werden, und durch das Hinzufügen von Typanmerkungen wird die Typsicherheit erhöht.
- Optionale und Standardparameter
- Sie können die Angabemöglichkeiten für Argumente nach Bedarf flexibler gestalten.
- Funktionstypdefinitionen
- Definieren Sie den Typ der Funktion selbst, um eine Typüberprüfung durchzuführen.
- Funktionsüberladung
- Sie können verschiedene Argumente mit demselben Funktionsnamen unterstützen.
Durch deren Nutzung können Sie klareren und robusteren Code in TypeScript schreiben.
Sie können den obigen Artikel mit Visual Studio Code auf unserem YouTube-Kanal verfolgen. Bitte schauen Sie sich auch den YouTube-Kanal an.