Menu
CoddyTech

Shapes erweitern

Teil des Abschnitts Einführung in Luau der Lua-Journey von Coddy. Lektion 43 von 80.

Verwandte Formen haben oft gemeinsame Felder. Jedes Admin ist auch ein User; wenn du die gemeinsamen Felder in beide Deklarationen kopierst, können sie auseinanderdriften.

Du hast den Schnittmengenoperator & beim Kombinieren von Aliasen kennengelernt. Er funktioniert bei Formen genauso. 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}

Während TypeScript für Schnittstellen 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 Vereinigungsmenge A | B ist entweder die eine oder die andere Form, während eine Schnittmenge A & B beide zugleich erfüllen muss. Und da Admin alle Felder von User besitzt, kann ein Wert vom Typ Admin überall dort übergeben werden, wo ein User erwartet wird.

challenge icon

Aufgabe

Einfach

Erweitere einen Mitarbeiter-Typ zu einem Manager-Typ.

  1. Schreibe type Employee = {name: string, department: string} und type Manager = Employee & {teamSize: number}.
  2. Erstelle local teamLead: Manager = {name = "Alice Johnson", department = "Engineering", teamSize = 8}.
  3. Gib `{teamLead.name} manages {teamLead.teamSize} people` und dann teamLead.department aus.

Drücke auf Run Code: Die Ausgabe zeigt Alice Johnson manages 8 people und Engineering.

Probier es selbst

-- 1) Definiere den Typ Employee, dann den Typ Manager = Employee & {...}
-- 2) Definiere lokal teamLead: Manager = {...}
-- 3) Gib die Zusammenfassungszeile aus, dann die Abteilung

Alle Lektionen in Einführung in Luau

Übe selbstständig: Online-Luau-Compiler