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.
Görev
Kolayİki küçük şekli tek bir şekilde birleştir.
type HasName = {name: string},type HasAge = {age: number}vetype Person = HasName & HasAgeyaz.local user: Person = {name = "Omar", age = 31}oluştur.`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
1Luau ile Başlarken
Luau Nedir?Neden Luau Kullanılmalı?İlk Luau KodunuzTip Denetimi ve Hata ModlarıÖzet: Luau'ya Giriş4Fonksiyonlarla Çalışma
Parametreleri ve Dönüş Değerlerini Tür BelirtmeAnonim Fonksiyonları Tür BelirtmeDeğer Döndürmeyen Fonksiyonlarİsteğe Bağlı ParametrelerVarsayılan Parametre DeğerleriBoolean Değerler için VarsayılanlarDeğişken Sayıda Parametre Alan FonksiyonlarFonksiyon Türlerini TanımlamaTekrar: Tür Belirtilmiş Fonksiyonlar2Temel Türler
Number, String ve Boolean'any' Türü: Kaçış Yolu'unknown' TürüNil ve İsteğe Bağlı TürlerTür Çıkarımı UygulamadaAçık Tür Ek AçıklamalarıTekrar: Temel Türler Alıştırması5Diğ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ı3Türlenmiş Tablolar: Diziler ve Map’ler
Türlenmiş DizilerÖğe Ekleme ve OkumaMap Türü Nedir?Map’leri Tanımlama ve ErişmeTablolar Üzerinde YinelemeKarma Şekilli TablolarBir Izgarayı OkumaBir Izgara Oluşturmatable.unpackÖzet: Diziler ve Map’lerKendi başına pratik yap: Online Luau derleyicisi