Typy przekroju
Część sekcji Wprowadzenie do Luau ścieżki Lua w Coddy. Lekcja 36 z 80.
Unie oznaczają, że wartość jest jednego lub drugiego typu. Typy przecięcia działają odwrotnie: ampersand & łączy kształty tabel w typ, który ma wszystkie pola każdej części:
type HasName = { name: string }
type HasAge = { age: number }
type Person = HasName & HasAge
-- Person musi mieć OBA pola
local user: Person = {
name = "Alice",
age = 25,
}Pomiń age, a weryfikator zgłosi błąd: przecięcie oznacza „i”, nigdy wybór jednej z opcji. Dzięki temu możesz budować duże kształty z małych, wielokrotnego użytku elementów: definiuj wyspecjalizowane typy dla oddzielnych zagadnień, a następnie łącz je w razie potrzeby:
type HasEmail = { email: string }
type Employee = HasName & HasAge & HasEmail
Ważna uwaga dotycząca Luau: stosuj przecięcie do kształtów tabel (i typów funkcji), a nie typów prostych. Coś takiego jak number & string nie ma sensu, ponieważ żadna wartość nie może być jednocześnie jednym i drugim typem. Gdy chcesz uzyskać „ten kształt plus tamten kształt”, użyj &.
Oczywiście w czasie wykonywania Person to po prostu zwykła tabela Lua: przecięcie istnieje wyłącznie na potrzeby weryfikatora.
Wyzwanie
ŁatwyPołącz dwie małe kształty w jeden.
- Napisz
type HasName = {name: string},type HasAge = {age: number}itype Person = HasName & HasAge. - Utwórz
local user: Person = {name = "Omar", age = 31}. - Wyświetl
`Name: {user.name}, Age: {user.age}`.
Naciśnij Uruchom kod: wynik pokazuje Name: Omar, Age: 31.
Spróbuj swoich sił
-- 1) type HasName, type HasAge, type Person = HasName & HasAge
-- 2) local user: Person = {...}
-- 3) wypisz wiersz z imieniem i wiekiem
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 niezwracające wartościParametry opcjonalneDomyślne wartości parametrówWartości domyślne dla typów BooleanFunkcje wariadyczneDefiniowanie typów funkcjiPodsumowanie: funkcje z typami2Podstawowe typy
Number, String i BooleanTyp 'any': wyjście awaryjneTyp 'unknown'Nil i typy opcjonalneInferencja typów w praktyceJawne adnotacje typówPowtórka: ćwiczenia z podstawowych typów5Aliasy, 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
Typowane tabliceDodawanie i odczytywanie elementówCzym jest typ mapy?Deklarowanie i uzyskiwanie dostępu do mapIterowanie po tabelachTabele o mieszanej strukturzeOdczytywanie siatkiTworzenie siatkitable.unpackPodsumowanie: tablice i mapyPoćwicz samodzielnie: Kompilator Luau online