Menu
Coddy logo textTech

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 doors

Tü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 sahiptir

Her 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.

challenge icon

Görev

Kolay

Aşağıdaki özelliklere sahip Employee adında bir temel arayüz (interface) oluşturun:

  • number türünde id
  • string türünde name
  • string türünde department

Employee arayüzünü genişleten (extends) ve aşağıdaki özellikleri ekleyen Manager adında bir arayüz oluşturun:

  • number türünde teamSize
  • number türünde budget

Aşağıdaki özelliklere sahip Contact adında bir tür takma adı (type alias) oluşturun:

  • string türünde email
  • string türünde phone

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ünde programmingLanguages
  • number türünde yearsExperience

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ğeri 8 ve budget değeri 250000 olan Manager türünde teamLead adı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ğeri 5 olan Developer türünde softwareDev adı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:

  • teamLead ile getManagerSummary fonksiyonunu çağırın ve sonucu yazdırın
  • softwareDev ile getDeveloperSkills fonksiyonunu çağırın ve sonucu yazdırın
  • teamLead değişkeninin department özelliğini yazdırın
  • softwareDev değ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ın
quiz iconKendini test et

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