Shapes erweitern
Teil des Abschnitts Einführung in Luau der Lua-Journey von Coddy — Lektion 41 von 73.
Verwandte Formen teilen sich oft Felder. Jeder Admin ist auch ein User; das Kopieren der gemeinsamen Felder in beide Deklarationen lädt dazu ein, dass sie auseinanderdriften.
Sie haben den Intersection-Operator & beim Kombinieren von Aliased kennengelernt — er funktioniert für Formen genau gleich. A & B bedeutet "hat 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}Wo TypeScript ein separates extends-Schlüsselwort für Interfaces benötigt, braucht Luau nichts Neues — Intersections erledigen die Aufgabe bereits. Sie können mehrere Teile verketten:
type Contact = {email: string}
type Developer = User & Contact & {yearsExperience: number}Verwechseln Sie & nicht mit |: Eine Union A | B ist eine der beiden Formen, während eine Intersection A & B beide gleichzeitig erfüllen muss. Und da Admin jedes User-Feld besitzt, kann ein Admin-Wert überall übergeben werden, wo ein User erwartet wird.
Aufgabe
EinfachEmployee—id(number),name(string),department(string)Manager—Employeeerweitert (via&) umteamSize(number)Contact—email(string)Developer— die Schnittmenge (intersection) 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 Folgendes jeweils in einer eigenen Zeile aus:
- das Ergebnis von
getManagerSummary(teamLead) [name] has [yearsExperience] years of experiencefürdev- das department von
teamLead - die email 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