Menu
Coddy logo textTech

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.

challenge icon

Aufgabe

Einfach

Erstelle diese Typ-Aliase:

  • Employee: id (number), name (string), department (string)
  • Manager: Employee, erweitert (über &) um teamSize (number)
  • Contact: email (string)
  • Developer: der Schnittpunkt von Employee, Contact und {yearsExperience: number}

Erstelle:

  • teamLead vom Typ Manager: id 101, name "Alice Johnson", department "Engineering", teamSize 8
  • dev vom Typ Developer: id 102, name "Bob Smith", department "Engineering", email "bob@company.com", yearsExperience 5

Erstelle eine Funktion getManagerSummary, die einen Manager entgegennimmt und [name] manages [teamSize] people zurückgibt.

Gib jeweils in einer eigenen Zeile aus:

  1. das Ergebnis von getManagerSummary(teamLead)
  2. [name] has [yearsExperience] years of experience für dev
  3. die Abteilung von teamLead
  4. 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
quiz iconTeste dich selbst

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

Übe selbstständig: Online-Lua-Compiler