Interface ve Tipleri Genişletme
Coddy'nin JavaScript Journey'sinin TypeScript'e Giriş bölümünün bir parçası — ders 42 / 73.
Kod yinelemek yerine TypeScript, kalıtım yoluyla mevcut türlere dayalı yeni türler oluşturmak için güçlü mekanizmalar sağlar.
Arayüzler için, temel bir arayüzden tüm özellikleri devralan yeni bir arayüz oluşturmak için extends anahtar kelimesini kullanabilirsiniz:
interface Vehicle {
brand: string;
year: number;
}
interface Car extends Vehicle {
doors: number;
}
// Car artık şu özelliklere sahiptir: brand, year ve doorsTür takma adları (type aliases) için, & operatörü ile kesişim türlerini (intersection types) kullanarak aynı sonucu elde edersiniz:
type Vehicle = {
brand: string;
year: number;
};
type Car = Vehicle & {
doors: number;
};
// Car, interface örneğiyle aynı özelliklere sahiptirHer iki yaklaşım da, temel türdeki tüm özellikleri ve tanımladığınız ek özellikleri içeren yeni türler oluşturur. Bu, kodun yeniden kullanılabilirliğini teşvik eder ve uygulamanızdaki ilgili türler arasında tutarlılığın korunmasına yardımcı olur.
Görev
KolayAşağıdaki özelliklere sahip Employee adında bir temel arayüz (interface) oluşturun:
numbertüründeidstringtüründenamestringtüründedepartment
Employee arayüzünü genişleten (extends) ve aşağıdaki özellikleri ekleyen Manager adında bir arayüz oluşturun:
numbertüründeteamSizenumbertüründebudget
Aşağıdaki özelliklere sahip Contact adında bir tür takma adı (type alias) oluşturun:
stringtüründeemailstringtüründephone
Employee ve Contact türlerini birleştiren kesişim türlerini (intersection types) kullanarak Developer adında bir tür takma adı oluşturun ve şu özellikleri ekleyin:
string[]türündeprogrammingLanguagesnumbertüründeyearsExperience
Arayüzlerinizi ve türlerinizi kullanarak aşağıdaki değişkenleri oluşturun:
- id değeri
101, name değeri"Alice Johnson", department değeri"Engineering", teamSize değeri8ve budget değeri250000olanManagertüründeteamLeadadında bir değişken oluşturun. - id değeri
102, name değeri"Bob Smith", department değeri"Engineering", email değeri"bob.smith@company.com", phone değeri"555-0123", programmingLanguages değeri["TypeScript", "Python", "Java"]ve yearsExperience değeri5olanDevelopertüründesoftwareDevadında bir değişken oluşturun.
Manager türünde bir parametre kabul eden ve "[name] manages [teamSize] people with a budget of $[budget]" formatında bir string döndüren getManagerSummary adında bir fonksiyon oluşturun.
Developer türünde bir parametre kabul eden ve "[name] knows [programmingLanguages joined with ', '] ([yearsExperience] years experience)" formatında bir string döndüren getDeveloperSkills adında bir fonksiyon oluşturun.
Aşağıdaki çıktıları ayrı satırlara yazdırın:
teamLeadilegetManagerSummaryfonksiyonunu çağırın ve sonucu yazdırınsoftwareDevilegetDeveloperSkillsfonksiyonunu çağırın ve sonucu yazdırınteamLeaddeğişkeninin department özelliğini yazdırınsoftwareDevdeğişkeninin email özelliğini yazdırın
Kendin dene
// YAPILACAK: Kodunuzu buraya yazın
// Employee arayüzünü oluşturun
// Employee'ı genişleten Manager arayüzünü oluşturun
// Contact tür takma adını (type alias) oluşturun
// Kesişim türlerini (intersection types) kullanarak Developer tür takma adını oluşturun
// Manager türünde teamLead değişkenini oluşturun
// Developer türünde softwareDev değişkenini oluşturun
// getManagerSummary fonksiyonunu oluşturun
// getDeveloperSkills 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ımlama