Biçimleri Genişletme
Coddy'nin Lua Journey'sinin Luau'ya Giriş bölümünün bir parçası — ders 41 / 73.
İlişkili şekiller genellikle alanları paylaşır. Her Admin aynı zamanda bir User türüdür; paylaşılan alanları her iki bildirime de kopyalamak, zamanla aralarında uyumsuzluk oluşmasına davetiye çıkarır.
Takma adları birleştirirken kesişim (intersection) operatörü & ile karşılaşmıştınız — şekiller için de tam olarak aynı şekilde çalışır. A & B ifadesi "A'daki her şeye ve B'deki her şeye sahip" anlamına gelir:
type User = {name: string, age: number}
type Admin = User & {level: number}
-- Admin artık şunları gerektirir: name, age VE level
local root: Admin = {name = "Root", age = 35, level = 9}TypeScript arabirimler (interfaces) için ayrı bir extends anahtar kelimesine ihtiyaç duyarken, Luau yeni hiçbir şeye ihtiyaç duymaz — kesişimler bu işi zaten halleder. Birden fazla parçayı birbirine zincirleyebilirsiniz:
type Contact = {email: string}
type Developer = User & Contact & {yearsExperience: number}& operatörünü | ile karıştırmayın: bir birleşim (union) A | B şekillerden biri iken, bir kesişim (intersection) A & B aynı anda her ikisini de karşılamalıdır. Ve Admin her User alanına sahip olduğu için, bir User beklenen her yere bir Admin değeri geçirilebilir.
Görev
KolayBu tip takma adlarını (type aliases) oluşturun:
Employee—id(number),name(string),department(string)Manager—&aracılığıylateamSize(number) ile genişletilmişEmployeeContact—email(string)Developer—Employee,Contactve{yearsExperience: number}kesişimi (intersection)
Oluşturun:
ManagertipindeteamLead— id101, name"Alice Johnson", department"Engineering", teamSize8Developertipindedev— id102, name"Bob Smith", department"Engineering", email"bob@company.com", yearsExperience5
Bir Manager alan ve [name] manages [teamSize] people döndüren bir getManagerSummary fonksiyonu oluşturun.
Aşağıdakilerin her birini ayrı bir satıra yazdırın:
getManagerSummary(teamLead)sonucunudeviçin[name] has [yearsExperience] years of experienceteamLeaddeğişkeninin department değerinidevdeğişkeninin email değerini
Kendin dene
-- Kodu buraya yaz
-- 1) Employee'yi tanımla, sonra Manager / Contact / Developer'ı & ile
-- 2) teamLead ve dev oluştur
-- 3) getManagerSummary yaz
-- 4) istenen dört satırı yazdır
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Luau'ya Giriş bölümündeki tüm dersler
1Luau ile Başlarken
Luau Nedir?Neden Luau Kullanılmalı?İlk Luau KodunuzTip Denetimi ve Hata ModlarıÖzet: Luau'ya Giriş4Fonksiyonlarla Çalışmak
Parametreleri ve Geri Dönüş Değerlerini TiplendirmeAnonim Fonksiyonları TiplendirmeHiçbir Şey Döndürmeyen Fonksiyonlarİsteğe Bağlı ParametrelerVarsayılan Parametre DeğerleriDeğişken Sayıda Parametre Alan Fonksiyonlar (Variadic)Fonksiyon Tiplerini TanımlamaÖzet: Tiplendirilmiş Fonksiyonlar2Temel Tipler
Temel Tipler: num, str, bool'any' Tipi: Kaçış Yolu'unknown' TipiNil ve İsteğe Bağlı (Optional) TiplerUygulamada Tip ÇıkarımıAçık Tip BelirteçleriÖzet: Temel Tipler Pratiği5Diğer Adlar (Aliases), Birleşimler, Kesişimler
İlkel Tipler için Tip Diğer Adları (Type Aliases)Birleşim Tipleri (Union Types)Birleşim Tipleri ile ÇalışmakLiteral (Sabit) TiplerKesişim Tipleri (Intersection Types)Tip Diğer Adlarını BirleştirmeÖzet: Gelişmiş Tip Kombinasyonları3Tipli Tablolar: Diziler ve Map'ler
Tipli DizilerEleman Ekleme ve OkumaMap Tipi Nedir?Map Bildirimi ve Map'lere ErişimTablolar Üzerinde YinelemeKarma Biçimli TablolarÇok Boyutlu Tipli Dizilertable.unpack ve VarargsÖzet: Diziler ve Map'ler6Tablo Biçimlerini Tiplendirme
Satır İçi Biçim AçıklamalarıBiçimler İçin Tip Takma Adlarıİsteğe Bağlı ÖzelliklerBiçimler ve Serbest TablolarBiçimleri GenişletmeBiçimlere Metot EklemeSelf ve İki Nokta MetotlarıÖzet: Tablo Biçimlerini Tanımlama