Shapes erweitern
Teil des Abschnitts Einführung in Luau der Lua-Journey von Coddy. Lektion 41 von 73.
Verwandte Strukturen haben oft gemeinsame Felder. Jeder Admin ist auch ein User; die gemeinsamen Felder in beide Deklarationen zu kopieren, lädt dazu ein, dass sie auseinanderlaufen.
Den Schnittmengenoperator & hast du beim Kombinieren von Aliasen kennengelernt. Er funktioniert bei Strukturen genauso. A & B bedeutet „enthält alles von A und alles von B“:
type User = {name: string, age: number}
type Admin = User & {level: number}
-- Admin erfordert jetzt: name, age UND level
local root: Admin = {name = "Root", age = 35, level = 9}Während TypeScript für Interfaces ein separates Schlüsselwort extends benötigt, braucht Luau nichts Neues: Schnittmengen erledigen diese Aufgabe bereits. Du kannst mehrere Teile verketten:
type Contact = {email: string}
type Developer = User & Contact & {yearsExperience: number}Verwechsle & nicht mit |: Eine Vereinigung A | B ist entweder die eine oder die andere Struktur, während eine Schnittmenge A & B beide gleichzeitig erfüllen muss. Und da Admin jedes User-Feld besitzt, kann ein Admin-Wert überall dort übergeben werden, wo ein User erwartet wird.
Aufgabe
EinfachErstelle diese Typ-Aliase:
Employee:id(number),name(string),department(string)Manager:Employee, erweitert (über&) umteamSize(number)Contact:email(string)Developer: der Schnittpunkt vonEmployee,Contactund{yearsExperience: number}
Erstelle:
teamLeadvom TypManager: id101, name"Alice Johnson", department"Engineering", teamSize8devvom TypDeveloper: id102, name"Bob Smith", department"Engineering", email"bob@company.com", yearsExperience5
Erstelle eine Funktion getManagerSummary, die einen Manager entgegennimmt und [name] manages [teamSize] people zurückgibt.
Gib jeweils in einer eigenen Zeile aus:
- das Ergebnis von
getManagerSummary(teamLead) [name] has [yearsExperience] years of experiencefürdev- die Abteilung von
teamLead - die E-Mail-Adresse von
dev
Probier es selbst
-- Schreibe den Code hier
-- 1) definiere Employee, dann Manager / Contact / Developer mit &
-- 2) erstelle teamLead und dev
-- 3) schreibe getManagerSummary
-- 4) gib die vier angeforderten Zeilen aus
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Einführung in Luau
1Erste Schritte mit Luau
Was ist Luau?Warum Luau nutzen?Dein erster Luau-CodeTypprüfung & FehlermodiZusammenfassung: Einführung in Luau4Arbeiten mit Funktionen
Typisierung von Parametern & RückgabewertenTypisierung von anonymen FunktionenFunktionen ohne RückgabewertOptionale ParameterStandard-ParameterwerteVariadische FunktionenDefinieren von FunktionstypenZusammenfassung: Typisierte Funktionen2Grundtypen
Grundlegende Typen: num, str, boolDer Typ 'any': Der AuswegDer Typ 'unknown'Nil- & optionale TypenTypinferenz in der PraxisExplizite TypannotationenZusammenfassung: Praxis zu Grundtypen5Typ-Aliase, Union-Typen und Schnittmengen-Typen
Typ-Aliase für PrimitivenUnion-TypenArbeiten mit Union-TypenLiterale TypenSchnittmengen-Typen (Intersection Types)Kombination von Typ-AliasenZusammenfassung: Fortgeschrittene Typ-Kombinationen3Typisierte Tabellen: Arrays & Maps
Typisierte ArraysHinzufügen und Lesen von ElementenWas ist ein Map-Typ?Deklarieren und Zugreifen auf MapsIterieren von TabellenGemischt-strukturierte TabellenMehrdimensionale typisierte Arraystable.unpack und VarargsZusammenfassung: Arrays und MapsÜbe selbstständig: Online-Lua-Compiler