Typvariablen in TypeScript
Für ein besseres Verständnis des Konzepts von Generics lassen Sie uns unsere erste Funktion erstellen - Identitätsfunktion. Eine solche Funktion gibt genau das zurück, was ihr übergeben wurde - mit demselben Typ.
Lassen Sie uns zunächst die Varianten unserer Funktion einzeln schreiben.
Schreiben wir eine Funktion, die eine Zahl als Parameter entgegennimmt und eine Zahl zurückgibt:
function func(data: number): number {
return data;
}
Nun schreiben wir eine Funktion, die einen String als Parameter entgegennimmt und einen String zurückgibt:
function func(data: string): string {
return data;
}
Nehmen wir nun an, wir möchten, dass das alles eine einzige Funktion erledigt. Das heißt, wir möchten eine Verallgemeinerung durchführen.
Dafür verwenden wir eine Typvariable,
die den Datentyp speichert. Eine solche Variable wird
in spitzen Klammern vor den runden Klammern
mit den Funktionsparametern deklariert. Lassen Sie uns
eine solche Variable deklarieren und ihr den Namen T geben
(kann beliebig sein):
function func <T>(hier Parameter) {
return data;
}
Danach haben wir die Variable T,
die wir verwenden können, um
den Typ des Parameters hineinzulegen, und dann
ihn als Rückgabetyp anzugeben.
Geben wir unserem Parameter den Typ unserer Variable:
function func <T>(data: T) {
return data;
}
Das Ergebnis ist, dass der Parameter in jedem
Typ übergeben werden kann, und dieser Typ in unserer
Variable T gespeichert wird.
Verwenden wir nun den Wert der Variable T
um den Rückgabetyp der Funktion anzugeben:
function func <T>(data: T): T {
return data;
}
Nun wird sich ergeben, dass der Rückgabetyp der Funktion sich aus dem Typ des Parameters ergibt. Lassen Sie uns das überprüfen.
Rufen wir die Funktion mit einer Zahl auf:
console.log( func(3) ); // gibt 3 aus
Rufen wir die Funktion mit einem String auf:
console.log( func('x') ); // gibt 'x' aus
Erstellen Sie eine Funktion, die als Parameter entweder zwei Zahlen oder zwei Strings entgegennimmt. Als Ergebnis soll die Funktion die Summe der Parameter zurückgeben.