Menu
CoddyTech

Kesişim Tipleri (Intersection Types)

Coddy'nin Lua Journey'sinin Luau'ya Giriş bölümünün bir parçası. Ders 36 / 80.

Birleşim türleri, bir değerin bir tür ya da başka bir tür olduğunu söyler. Kesişim türleri ise ters yönde çalışır: ve işareti &, tablo biçimlerini birleştirerek her parçadaki tüm alanlara sahip bir tür oluşturur:

type HasName = { name: string }
type HasAge = { age: number }

type Person = HasName & HasAge

-- Bir Person, her iki alana da sahip olmalıdır
local user: Person = {
    name = "Alice",
    age = 25,
}

age alanını dışarıda bırak, tür denetleyicisi hata verir: kesişim bir "ve"dir, asla istediğini seçebileceğin bir seçenek değildir. Bu, küçük ve yeniden kullanılabilir parçalardan büyük biçimler oluşturmanı sağlar: ayrı konular için odaklanmış türler tanımla, sonra gerektiğinde bunları bir araya getir:

type HasEmail = { email: string }

type Employee = HasName & HasAge & HasEmail

Luau hakkında önemli bir not: ilkel türleri değil, tablo biçimlerini (ve işlev türlerini) kesiştir. number & string gibi bir ifade anlamsızdır; çünkü hiçbir değer aynı anda her iki türde birden olamaz. "Şu biçime ek olarak bu biçim" istediğinde kullanacağın araç & işaretidir.

Elbette çalışma zamanında bir Person, sıradan bir Lua tablosundan ibarettir: kesişim yalnızca tür denetleyicisi için vardır.

challenge icon

Görev

Kolay

İki küçük şekli tek bir şekilde birleştir.

  1. type HasName = {name: string}, type HasAge = {age: number} ve type Person = HasName & HasAge yaz.
  2. local user: Person = {name = "Omar", age = 31} oluştur.
  3. `Name: {user.name}, Age: {user.age}` yazdır.

Run Code düğmesine bas: çıktı Name: Omar, Age: 31 gösterir.

Kendin dene

-- 1) type HasName, type HasAge, type Person = HasName & HasAge
-- 2) local user: Person = {...}
-- 3) ad ve yaş satırını yazdır

Luau'ya Giriş bölümündeki tüm dersler

Kendi başına pratik yap: Online Luau derleyicisi