Menu
Coddy logo textTech

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.

challenge icon

Aufgabe

Einfach
Erstelle diese Typ-Aliase:

  • Employeeid (number), name (string), department (string)
  • ManagerEmployee erweitert (via &) um teamSize (number)
  • Contactemail (string)
  • Developer — die Schnittmenge (intersection) 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 Folgendes jeweils in einer eigenen Zeile aus:

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