Menu
Coddy logo textTech

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.

challenge icon

Görev

Kolay

Bu tip takma adlarını (type aliases) oluşturun:

  • Employeeid (number), name (string), department (string)
  • Manager& aracılığıyla teamSize (number) ile genişletilmiş Employee
  • Contactemail (string)
  • DeveloperEmployee, Contact ve {yearsExperience: number} kesişimi (intersection)

Oluşturun:

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

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:

  1. getManagerSummary(teamLead) sonucunu
  2. dev için [name] has [yearsExperience] years of experience
  3. teamLead değişkeninin department değerini
  4. dev değ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
quiz iconKendini test et

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