Ana içeriğe geç
Modül 7 · Ders 2 ders 2Kurstaki 14/14~15 min
Modül dersleri (2/2)

Bildirimler ve Birleşme

Tür bildirim dosyaları (.d.ts uzantılı), TypeScript'te herhangi bir gerçek mantık uygulamadan mevcut JavaScript kodunun şeklini tanımlamak için kullanılır. Yalnızca tür tanımlarını, arayüzleri ve işlev imzalarını içerirler.

Bu dosyalar, saf JavaScript ile yazılmış üçüncü taraf kitaplıkları kullanırken çok önemlidir.


Beyan Birleştirme

Bildirim Birleştirme, derleyicinin aynı adla bildirilen iki veya daha fazla ayrı bildirimi tek bir tanımda birleştirdiği bir davranıştır.

En yaygın durum arayüz birleştirmedir:

TS
interface User {
  name: string;
}

interface User {
  age: number;
}

// The resulting User interface has both name and age properties!
const student: User = {
  name: 'Alice',
  age: 23,
};

Özellikler aynı adı paylaşıyorsa aynı türde olmaları gerekir, aksi takdirde TypeScript bir hata bildirir.


Global ve Harici Modülleri Değiştirme

Diğer modüllerde veya global kapsamda tanımlanan arayüzleri genişletmek için bildirim birleştirmeyi kullanabiliriz.

Örneğin, tarayıcının global window nesnesine bir özellik eklemek istiyorsak:

TS
declare global {
  interface Window {
    analyticsToken: string;
  }
}

declare global kullanarak TypeScript'e mevcut global Window arayüzüne yeni bir imza enjekte ettiğimizi söyleriz.


Kendin dene

Alıştırma 1: Temel Bildirge Birleştirme

Egzersiz#ts.m7.l2.e1
Denemeler: 0Yükleniyor…

TypeScript'te aynı kapsamdaki aynı ada sahip arayüzler otomatik olarak birleştirilir. Özellik adı: string ile bir arayüz Kullanıcısı bildirin, ardından ikinci bir blokta age: number özelliğini ekleyerek aynı arayüzü Kullanıcıyı bildirin. Son olarak, uygun değerlere sahip User türünde sabit bir kullanıcı bildirin.

Düzenleyici yükleniyor…
İpucu göster

İlgili özellikleri ekleyerek arayüz Kullanıcısını iki kez bildirin ve ardından alanları kullanıcı nesnesine atayın.

3 denemeden sonra çözüm mevcut

Alıştırma 2: Global Pencere Arayüzünü Genişletme

Egzersiz#ts.m7.l2.e2
Denemeler: 0Yükleniyor…

Record<string, string> türünde config adlı özel bir özellik eklemek için genel Pencere arayüzünü genişletmek istediğinizi düşünün. Yeni özelliği global Pencere arayüzüyle birleştirmek için global bildirimini kullanarak doğru bildirimi yazın.

Düzenleyici yükleniyor…
İpucu göster

deklare global { arayüz Penceresini kullanın { config: Record<string, string>; } }.

3 denemeden sonra çözüm mevcut