Menu
CoddyTech

Rozszerzanie kształtów

Część sekcji Wprowadzenie do Luau ścieżki Lua w Coddy. Lekcja 43 z 80.

Powiązane kształty często mają wspólne pola. Każdy Admin jest również User; kopiowanie wspólnych pól do obu deklaracji grozi ich rozbieżnością.

Operator przecięcia & pojawił się przy łączeniu aliasów. Działa dokładnie tak samo w przypadku kształtów. A & B oznacza „ma wszystko z A i wszystko z B”:

type User = {name: string, age: number}
type Admin = User & {level: number}

-- Admin wymaga teraz: name, age ORAZ level
local root: Admin = {name = "Root", age = 35, level = 9}

Podczas gdy TypeScript wymaga osobnego słowa kluczowego extends dla interfejsów, Luau nie potrzebuje niczego nowego: przecięcia już spełniają to zadanie. Możesz połączyć kilka części:

type Contact = {email: string}
type Developer = User & Contact & {yearsExperience: number}

Nie myl & z |: unia A | B oznacza jeden albo drugi kształt, podczas gdy przecięcie A & B musi spełniać oba warunki jednocześnie. A ponieważ Admin ma wszystkie pola User, wartość Admin można przekazać wszędzie tam, gdzie oczekiwany jest User.

challenge icon

Wyzwanie

Łatwy

Rozszerz typ pracownika, tworząc typ menedżera.

  1. Zapisz type Employee = {name: string, department: string} i type Manager = Employee & {teamSize: number}.
  2. Utwórz local teamLead: Manager = {name = "Alice Johnson", department = "Engineering", teamSize = 8}.
  3. Wyświetl `{teamLead.name} manages {teamLead.teamSize} people`, a następnie teamLead.department.

Naciśnij Run Code: wynik to Alice Johnson manages 8 people i Engineering.

Spróbuj swoich sił

-- 1) type Employee, następnie type Manager = Employee & {...}
-- 2) local teamLead: Manager = {...}
-- 3) print wiersz podsumowania, a następnie dział

Wszystkie lekcje w sekcji Wprowadzenie do Luau

Poćwicz samodzielnie: Kompilator Luau online