Erweitern von Interfaces und Typen
Teil des Abschnitts Einführung in TypeScript der JavaScript-Journey von Coddy. Lektion 42 von 73.
Anstatt Code zu duplizieren, bietet TypeScript leistungsstarke Mechanismen, um neue Typen auf der Grundlage bestehender Typen durch Vererbung zu erstellen.
Für Schnittstellen kannst du das Schlüsselwort extends verwenden, um eine neue Schnittstelle zu erstellen, die alle Eigenschaften von einer Basisschnittstelle erbt:
interface Vehicle {
brand: string;
year: number;
}
interface Car extends Vehicle {
doors: number;
}
// Car now has: brand, year, and doorsFür Typ-Aliase erzielst du dasselbe Ergebnis, indem du Schnittmengentypen mit dem Operator & verwendest:
type Vehicle = {
brand: string;
year: number;
};
type Car = Vehicle & {
doors: number;
};
// Car has the same properties as the interface exampleBeide Ansätze erstellen neue Typen, die alle Eigenschaften des Basistyps sowie alle von Ihnen definierten zusätzlichen Eigenschaften enthalten. Dies fördert die Wiederverwendbarkeit von Code und hilft dabei, die Konsistenz über verwandte Typen in Ihrer Anwendung hinweg zu wahren.
Aufgabe
EinfachErstelle ein Basis-Interface namens Employee mit den folgenden Eigenschaften:
idvom Typnumbernamevom Typstringdepartmentvom Typstring
Erstelle ein Interface namens Manager, das Employee erweitert und die folgenden Eigenschaften hinzufügt:
teamSizevom Typnumberbudgetvom Typnumber
Erstelle einen Typalias namens Contact mit den folgenden Eigenschaften:
emailvom Typstringphonevom Typstring
Erstelle mithilfe von Schnittmengentypen einen Typalias namens Developer, der Employee und Contact kombiniert und die folgenden Eigenschaften hinzufügt:
programmingLanguagesvom Typstring[]yearsExperiencevom Typnumber
Erstelle mithilfe deiner Interfaces und Typen die folgenden Variablen:
- Erstelle eine Variable namens
teamLeadvom TypManagermit der ID101, dem Namen"Alice Johnson", der Abteilung"Engineering", der Teamgröße8und dem Budget250000 - Erstelle eine Variable namens
softwareDevvom TypDevelopermit der ID102, dem Namen"Bob Smith", der Abteilung"Engineering", der E-Mail-Adresse"bob.smith@company.com", der Telefonnummer"555-0123", den Programmiersprachen["TypeScript", "Python", "Java"]und5Jahren Berufserfahrung
Erstelle eine Funktion namens getManagerSummary, die einen Parameter vom Typ Manager akzeptiert und einen string im Format "[name] manages [teamSize] people with a budget of $[budget]" zurückgibt.
Erstelle eine Funktion namens getDeveloperSkills, die einen Parameter vom Typ Developer akzeptiert und einen string im Format "[name] knows [programmingLanguages joined with ', '] ([yearsExperience] years experience)" zurückgibt.
Gib die folgenden Ausgaben in separaten Zeilen aus:
- Rufe
getManagerSummarymitteamLeadauf und gib das Ergebnis aus - Rufe
getDeveloperSkillsmitsoftwareDevauf und gib das Ergebnis aus - Gib die Abteilung von
teamLeadaus - Gib die E-Mail-Adresse von
softwareDevaus
Probier es selbst
// TODO: Schreibe deinen Code hier
// Erstelle das Employee-Interface
// Erstelle das Manager-Interface, das Employee erweitert
// Erstelle den Contact-Typ-Alias
// Erstelle den Developer-Typ-Alias unter Verwendung von Intersection-Typen
// Erstelle die Variable teamLead vom Typ Manager
// Erstelle die Variable softwareDev vom Typ Developer
// Erstelle die Funktion getManagerSummary
// Erstelle die Funktion getDeveloperSkills
// Gib 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 definierenÜbe selbstständig: Online-JavaScript-Compiler