Kesişim Tipleri ('&')
Coddy'nin JavaScript Journey'sinin TypeScript'e Giriş bölümünün bir parçası — ders 34 / 73.
Birleşim türleri birden fazla türden biri olabilen değişkenler oluşturmanıza olanak tanırken, kesişim türleri tam tersi yönde çalışır. Birden fazla türü, birleştirilen türlerin tüm özelliklerine sahip olan tek bir türde birleştirirler.
Kesişim türleri, türleri birleştirmek için ampersand (&) operatörünü kullanır. İki nesne türünü kesiştirdiğinizde, sonuç her iki türden de tüm özellikleri içerir:
type HasName = { name: string };
type HasAge = { age: number };
type Person = HasName & HasAge;
// Person artık hem name HEM DE age özelliklerine sahiptir
let user: Person = {
name: "Alice",
age: 30
};Bu, daha küçük, yeniden kullanılabilir parçalardan karmaşık türler oluşturmak istediğinizde özellikle yararlıdır. Tek bir büyük nesne türü tanımlamak yerine, belirli konulara odaklanmış türler oluşturabilir ve ardından bunları gerektiği gibi birleştirebilirsiniz.
Kesişim türleri (intersection types), ortaya çıkan türün kesişen türlerin tüm gereksinimlerini karşılamasını sağlar. Değişken, kesişimdeki her türün her özelliğine sahip olmalıdır; birleşimlerde (unions) olduğu gibi seçmece yapma durumu yoktur.
Görev
Kolayİki tür takma adı (type alias) oluşturun: string türünde bir name özelliğine sahip bir nesne için HasName ve number türünde bir age özelliğine sahip bir nesne için HasAge.
& operatörünü kullanarak HasName ve HasAge türlerini kesiştirerek Person adında üçüncü bir tür takma adı oluşturun.
string türünde bir email özelliğine sahip bir nesne için HasEmail adında başka bir tür takma adı oluşturun.
Üç türün tamamını (HasName, HasAge ve HasEmail) kesiştirerek Employee adında dördüncü bir tür takma adı oluşturun.
Şimdi aşağıdaki değişkenleri oluşturun:
- Adı
"Alice"ve yaşı25olanPersontüründeuseradında bir değişken oluşturun - Adı
"Bob", yaşı30ve e-postası"bob@company.com"olanEmployeetüründeworkeradında bir değişken oluşturun
Person türünde bir parametre kabul eden ve "Name: [name], Age: [age]" formatında bir dize döndüren displayPerson adında bir fonksiyon oluşturun.
Employee türünde bir parametre kabul eden ve "Name: [name], Age: [age], Email: [email]" formatında bir dize döndüren displayEmployee adında başka bir fonksiyon oluşturun.
Her iki fonksiyonu da uygun değişkenlerle çağırın ve sonuçları ayrı satırlara yazdırın.
Kendin dene
// YAPILACAK: Kodunuzu buraya yazın
// HasName, HasAge, HasEmail için tür takma adları oluşturun
// Kesişim (intersection) kullanarak Person ve Employee türlerini oluşturun
// user ve worker değişkenlerini oluşturun
// displayPerson ve displayEmployee fonksiyonlarını oluşturun
// Fonksiyonları çağırın ve sonuçları yazdırınBu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
TypeScript'e Giriş bölümündeki tüm dersler
1TS ile Başlarken
TypeScript Nedir?Neden TypeScript Kullanılır?İlk TypeScript KodunuzDerleme Süreci ve HatalarÖzet: TS'ye Giriş4Fonksiyonlarla Çalışmak
Parametre ve Dönüş Değerlerini TiplendirmeArrow Fonksiyonlarını Tiplendirme'void' Dönüş Tipi'?' ile Opsiyonel ParametrelerVarsayılan Parametre DeğerleriRest Parametrelerini TiplendirmeFonksiyon Tiplerini TanımlamaÖzet: Tiplendirilmiş Fonksiyonlar Oluşturma2Temel Tipler
Temel Tipler: str, num, boolean'any' Tipi: Kaçış Yolu'unknown' Tipi'null' ve 'undef' ile ÇalışmakTip Çıkarımı İş BaşındaAçık Tip BelirlemeleriÖzet: Temel Tipler Pratiği5Tipler: Takma Adlar, Unionlar ve Kesişimler
İlkel Tipler için Tip Takma AdlarıUnion Tipler ('|')Union Tipler ile ÇalışmakLiteral TiplerKesişim Tipleri ('&')Tip Takma Adlarını BirleştirmeÖzet: Gelişmiş Tip Kombinasyonları3Veri Yapısı: Diziler ve Tuple
Tipli DizilerDiziler için 'readonly' BelirleyicisiTuple Nedir?Tuple Tanımlama ve ErişmeTuple DestructuringReadonly Tuple'larÇok Boyutlu Tipli DizilerDizilerle Spread OperatörüÖzet: Diziler ve Tuple'lar6Nesneleri ve Interface'leri Tiplendirme
Satır İçi Nesne Tipi BelirtimleriNesneler için Type Alias KullanımıInterface'lere GirişInterface'ler ve Type Alias'ların KarşılaştırılmasıOpsiyonel ve Readonly ÖzelliklerInterface ve Tipleri GenişletmeInterface'lere Metot EklemeÖzet: Nesne Yapılarını Tanımlama