Generische Interfaces
Teil des Abschnitts Einführung in TypeScript der JavaScript-Journey von Coddy — Lektion 61 von 73.
Genauso wie Sie generische Funktionen erstellen können, können Sie auch generische Interfaces erstellen. Dies ermöglicht es Ihnen, die Struktur eines Objekts zu definieren, während bestimmte Eigenschaftstypen flexibel und wiederverwendbar bleiben.
So erstellen Sie ein generisches Interface mit derselben Typparameter-Syntax:
interface Container {
value: T;
isEmpty: boolean;
}Das <T> nach dem Interface-Namen erstellt einen Typparameter, der in der gesamten Interface-Definition verwendet werden kann. In diesem Beispiel wird die Eigenschaft value den Typ haben, den Sie bei der Verwendung des Interfaces angeben, während isEmpty ein fester boolean-Typ bleibt.
Wenn Sie ein generisches Interface verwenden, geben Sie den konkreten Typ in spitzen Klammern an:
const stringContainer: Container = {
value: "hello",
isEmpty: false
};
const numberContainer: Container = {
value: 42,
isEmpty: false
};Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Aufgabe
EinfachErstellen Sie ein generisches Interface namens Result, das Daten eines beliebigen Typs zusammen mit einer Erfolgs-Information speichern kann.
Das Interface sollte zwei Eigenschaften haben:
successvom Typbooleandatavom TypT(der generische Typparameter)
Erstellen Sie die folgenden Objekte unter Verwendung Ihres generischen Interfaces:
stringResultvom TypResult<string>mitsuccess: trueunddata: "Operation completed"numberResultvom TypResult<number>mitsuccess: trueunddata: 42booleanResultvom TypResult<boolean>mitsuccess: falseunddata: falsearrayResultvom TypResult<string[]>mitsuccess: trueunddata: ["item1", "item2", "item3"]
Erstellen Sie eine generische Funktion namens processResult, die:
- Einen generischen Typparameter
Tverwendet - Einen Parameter
resultvom TypResult<T>entgegennimmt - Eine String-Nachricht zurückgibt
- Wenn
successden Werttruehat,"Success: [data]"zurückgibt - Wenn
successden Wertfalsehat,"Failed: [data]"zurückgibt
Geben Sie die folgenden Ausgaben aus:
- Geben Sie das Ergebnis des Aufrufs von
processResultmitstringResultaus - Geben Sie das Ergebnis des Aufrufs von
processResultmitnumberResultaus - Geben Sie das Ergebnis des Aufrufs von
processResultmitbooleanResultaus - Geben Sie das Ergebnis des Aufrufs von
processResultmitarrayResultaus - Geben Sie
stringResult.dataaus
Spickzettel
Generische Interfaces ermöglichen es Ihnen, die Form eines Objekts zu definieren, während bestimmte Eigenschaftstypen flexibel und wiederverwendbar bleiben.
Erstellen Sie ein generisches Interface mit der Typparameter-Syntax:
interface Container<T> {
value: T;
isEmpty: boolean;
}Das <T> nach dem Interface-Namen erstellt einen Typparameter, der in der gesamten Interface-Definition verwendet werden kann.
Verwenden Sie ein generisches Interface, indem Sie den konkreten Typ in spitzen Klammern angeben:
const stringContainer: Container<string> = {
value: "hello",
isEmpty: false
};
const numberContainer: Container<number> = {
value: 42,
isEmpty: false
};Probier es selbst
// TODO: Schreiben Sie Ihren Code hier
// Erstellen Sie das generische Result-Interface
// Erstellen Sie die Objekte unter Verwendung des Result-Interfaces
// Erstellen Sie die generische processResult-Funktion
// Geben Sie die erforderlichen Ausgaben ausDiese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Einführung in TypeScript
1Erste Schritte mit TS
Was ist TypeScript?Warum TypeScript verwenden?Dein erster TypeScript-CodeKompilierungsprozess & FehlerZusammenfassung: Einführung in TS4Arbeiten mit Funktionen
Typisierung von Parametern & RückgabewertenTypisierung von Arrow-FunktionenDer Rückgabetyp 'void'Optionale Parameter mit '?'Standard-ParameterwerteTypisierung von Rest-ParameternDefinieren von FunktionstypenZusammenfassung: Typisierte Funktionen erstellen2Basis-Typen
Basis-Typen: str, num, booleanDer 'any'-Typ: Der NotausgangDer 'unknown'-TypArbeiten mit 'null' & 'undef'Typinferenz in der PraxisExplizite Typ-AnnotationenZusammenfassung: Übung zu Basis-Typen5Typen: Aliase, Unions & Intersections
Typ-Aliase für primitive DatentypenUnion-Typen ('|')Arbeiten mit Union-TypenLiteral-TypenIntersection-Typen ('&')Kombinieren von Typ-AliasenZusammenfassung: Fortgeschrittene Typ-Kombinationen3Datenstruktur: Arrays & Tupel
Typisierte Arrays'readonly'-Modifikator für ArraysWas ist ein Tupel?Deklarieren von und Zugriff auf TupelDestrukturierung von TupelnReadonly-TupelMehrdimensionale typisierte ArraysSpread-Operator mit ArraysZusammenfassung: Arrays und Tupel6Typisierung von Objekten und Interfaces
Inline-Typanmerkungen für ObjekteType-Aliase für ObjekteEinführung in InterfacesInterfaces vs. Type-AliaseOptionale & Readonly-EigenschaftenErweitern von Interfaces und TypenMethoden zu Interfaces hinzufügenZusammenfassung: Objektstrukturen definieren9Generics: Ein erster Blick
Das Problem, das Generics lösenErstellen einer generischen Identity-FunktionVerwenden einer generischen FunktionGenerische ArraysGenerische InterfacesZusammenfassung: Praxis mit generischen Funktionen