Menu
Coddy logo textTech

Rozszerzanie kształtów

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

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 & został omówiony 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 wymaga 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

Utwórz następujące aliasy typów:

  • Employee: id (number), name (string), department (string)
  • Manager: rozszerzony Employee (za pomocą &) o teamSize (number)
  • Contact: email (string)
  • Developer: przecięcie Employee, Contact i {yearsExperience: number}

Utwórz:

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

Utwórz funkcję getManagerSummary, która przyjmuje Manager i zwraca [name] manages [teamSize] people.

Wyświetl, każdy element w osobnym wierszu:

  1. wynik getManagerSummary(teamLead)
  2. [name] has [yearsExperience] years of experience dla dev
  3. dział teamLead
  4. adres e-mail dev

Spróbuj swoich sił

-- Napisz kod tutaj
-- 1) zdefiniuj Employee, a następnie Manager / Contact / Developer za pomocą &
-- 2) utwórz teamLead i dev
-- 3) napisz getManagerSummary
-- 4) wypisz cztery wymagane wiersze
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Wprowadzenie do Luau

Poćwicz samodzielnie: Kompilator Luau online