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.
Wyzwanie
ŁatwyUtwórz następujące aliasy typów:
Employee:id(number),name(string),department(string)Manager: rozszerzonyEmployee(za pomocą&) oteamSize(number)Contact:email(string)Developer: przecięcieEmployee,Contacti{yearsExperience: number}
Utwórz:
teamLeadtypuManager: id101, name"Alice Johnson", department"Engineering", teamSize8devtypuDeveloper: id102, name"Bob Smith", department"Engineering", email"bob@company.com", yearsExperience5
Utwórz funkcję getManagerSummary, która przyjmuje Manager i zwraca [name] manages [teamSize] people.
Wyświetl, każdy element w osobnym wierszu:
- wynik
getManagerSummary(teamLead) [name] has [yearsExperience] years of experiencedladev- dział
teamLead - 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
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Wprowadzenie do Luau
1Pierwsze kroki z Luau
Czym jest Luau?Dlaczego warto używać Luau?Twój pierwszy kod w LuauSprawdzanie typów i tryby błędówPodsumowanie: Wprowadzenie do Luau4Praca z funkcjami
Typowanie parametrów i wartości zwracanychTypowanie funkcji anonimowychFunkcje niczego nie zwracająceParametry opcjonalneDomyślne wartości parametrówFunkcje wariadyczneDefiniowanie typów funkcjiPodsumowanie: funkcje z typami2Typy podstawowe
Typy podstawowe: num, str, boolTyp „any”: furtka awaryjnaTyp „unknown”Typy Nil i opcjonalneInferencja typów w praktyceJawne adnotacje typówPowtórka: ćwiczenie typów podstawowych5Aliasy, typy sumy i przekroju
Aliasy typów dla typów prostychTypy sumyPraca z typami sumyTypy literałoweTypy przekrojuŁączenie aliasów typówPodsumowanie: zaawansowane kombinacje typów3Typowane tabele: tablice i mapy
Tablice typowaneDodawanie i odczytywanie elementówCzym jest typ mapy?Deklarowanie map i dostęp do nichIterowanie po tabelachTabele o mieszanej strukturzeWielowymiarowe tablice typowanetable.unpack i varargsPodsumowanie: tablice i mapyPoćwicz samodzielnie: Kompilator Luau online