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:
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:
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
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.
İ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
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.
İpucu göster
deklare global { arayüz Penceresini kullanın { config: Record<string, string>; } }.
3 denemeden sonra çözüm mevcut