Interface'ler ve Type Alias'ların Karşılaştırılması
Coddy'nin JavaScript Journey'sinin TypeScript'e Giriş bölümünün bir parçası — ders 40 / 73.
Nesne şekillerini tanımlamak için hem tür takma adlarını (type aliases) hem de arayüzleri (interfaces) öğrendiğinize göre, her bir yaklaşımın ne zaman kullanılacağını anlamak önemlidir. Benzer amaçlara hizmet etseler de, seçiminizi etkileyebilecek temel farklar vardır.
Benzerlikler: Hem arayüzler (interfaces) hem de tür takma adları (type aliases), nesnelerin yapısını aynı tür güvenliği seviyesiyle tanımlayabilir. Gerekli özellikleri, isteğe bağlı özellikleri ve readonly özelliklerini belirtmek için her iki yaklaşımı da kullanabilirsiniz. Her ikisi de diğer türlerle genişletilmeyi veya birleştirilmeyi destekler.
Temel Fark - Bildirim Birleştirme (Declaration Merging): En önemli fark, interface'lerin bildirim birleştirmeyi (declaration merging) desteklemesi, type alias'ların ise desteklememesidir. Bu, aynı interface'i birden fazla kez bildirebileceğiniz ve TypeScript'in tüm bildirimleri otomatik olarak tek bir interface'de birleştireceği anlamına gelir:
interface User {
name: string;
}
interface User {
age: number;
}
// TypeScript bunları şuna birleştirir:
// interface User {
// name: string;
// age: number;
// }Aynı yaklaşımı tür takma adları (type aliases) ile denerseniz, TypeScript yinelenen tanımlayıcılar (duplicate identifiers) hakkında bir hata fırlatacaktır. Bu birleştirme yeteneği, kütüphanelerle çalışırken veya mevcut tür tanımlamalarını kod tabanınızın farklı bölümlerinde genişletmeniz gerektiğinde arayüzleri (interfaces) özellikle kullanışlı hale getirir.
Ne Zaman Seçilmeli: Daha sonra genişletilmesi veya birleştirilmesi gerekebilecek nesne şekillerini tanımlarken interface'leri kullanın. Union'lar, intersection'lar gibi daha karmaşık tür işlemlerine ihtiyaç duyduğunuzda veya primitive türlerle çalışırken type alias'ları kullanın.
Kendin dene
Bu ders bir kod alıştırması içermiyor.
Bu 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