Tip Takma Adlarını Birleştirme
Coddy'nin JavaScript Journey'sinin TypeScript'e Giriş bölümünün bir parçası. Ders 35 / 73.
Tür takma adlarının (type aliases) en güçlü yönlerinden biri, daha gelişmiş tür tanımları oluşturmak için birleştirilebilmeleri ve yeniden kullanılabilmeleridir. Karmaşık türleri her seferinde sıfırdan tanımlamak yerine, daha küçük ve odaklanmış tür takma adlarını bir araya getirerek bunları inşa edebilirsiniz.
Bu yaklaşım kodun yeniden kullanılabilirliğini teşvik eder ve tür tanımlarınızı daha sürdürülebilir hale getirir. Bir temel türü güncellemeniz gerektiğinde, onu kullanan tüm bileşik türler değişiklikleri otomatik olarak devralır:
type Email = string;
type Phone = number;
type Contact = {
name: string;
email: Email;
phone: Phone;
};Esnek veri yapıları oluşturmak için birleşim türleri (union types) içinde tür takma adlarını (type aliases) da birleştirebilirsiniz. Bu, özellikle bir nesne özelliğinin farklı formatları kabul edebileceği durumlarda kullanışlıdır:
type ContactMethod = Email | Phone;
type User = {
id: number;
preferredContact: ContactMethod;
};Bu kompozisyonel yaklaşım, kodunuzu daha ifade edici ve anlaşılması daha kolay hale getirir. string veya number gibi genel türleri görmek yerine, diğer geliştiriciler Email ve Phone gibi anlamlı tür adları aracılığıyla amaçlanan hedefi anında anlarlar.
Görev
Kolaystring türü için Username adında bir tür takma adı (type alias) oluşturun.
number türü için UserAge adında bir tür takma adı oluşturun.
Bir birleşim türü (union type) kullanarak Username ve UserAge türlerini birleştiren ContactMethod adında bir tür takma adı oluşturun.
Aşağıdaki özelliklere sahip bir nesne için UserProfile adında bir tür takma adı oluşturun:
numbertüründeidUsernametüründedisplayNameContactMethodtüründepreferredContact
Kesişim türlerini (intersection types) kullanarak UserProfile ile string türünde bir permissions özelliği içeren ek bir nesne türünü birleştiren AdminProfile adında bir tür takma adı oluşturun.
Şimdi aşağıdaki değişkenleri oluşturun:
- id değeri
1, displayName değeri"john_doe"ve preferredContact değeri"john_doe"olanUserProfiletüründeregularUseradında bir değişken oluşturun. - id değeri
2, displayName değeri"admin", preferredContact değeri25ve permissions değeri"full_access"olanAdminProfiletüründesystemAdminadında bir değişken oluşturun.
ContactMethod türünde contact adında bir parametre alan ve bir string döndüren getContactInfo adında bir fonksiyon oluşturun. Türü kontrol etmek için bir tür koruması (type guard) kullanın ve şunları döndürün:
- Eğer bir string ise:
"Contact: [contact]" - Eğer bir sayı ise:
"Age: [contact]"
Aşağıdaki çıktıları ayrı satırlara yazdırın:
regularUser.preferredContactilegetContactInfofonksiyonunu çağırın ve sonucu yazdırınsystemAdmin.preferredContactilegetContactInfofonksiyonunu çağırın ve sonucu yazdırınsystemAdmin.permissionsdeğerini yazdırın
Kendin dene
// YAPILACAK: Kodunuzu buraya yazın
// Username, UserAge, ContactMethod, UserProfile ve AdminProfile için tür takma adları (type aliases) oluşturun
// regularUser ve systemAdmin değişkenlerini oluşturun
// getContactInfo fonksiyonunu oluşturun
// Gerekli çıktı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ımlamaKendi başına pratik yap: Online JavaScript derleyicisi