Namespace vs module
- TypeScript kursu
- Orta seviye
- Ders 56/89
- 4 dk
Namespace ile module farkını öğrenirsin.
Namespace vs module
Namespace, global kapsamda ilgili kodu bir ad altında gruplar. Module ise dosya tabanlıdır; her dosya kendi kapsamına sahiptir ve import/export ile bağlanır. Yeni projelerde module önerilir; namespace daha eski bir desendir.
// namespace deseni (eski)
namespace Hesap {
export function topla(a, b) { return a + b; }
}
// module deseni (yeni)
// dosya: hesap.ts
export function topla(a, b) { return a + b; }Ne zaman namespace?
Namespace, eski JavaScript kütüphanelerini TypeScript'e taşırken veya tek dosyalık yardımcı programlarda hâlâ işe yarar. Ancak birden çok dosyaya yayılacak modern bir projede module kullanmak daha uygundur; çünkü module dosya başına bağımsız kapsam ve açık bağımlılık bildirimi sağlar.
Uygulama Eski desen kütüphane başlığı
Bir namespace yapısının derleme sonrası eşdeğeri olan nesne desenini kullanarak Kutuphane adında bir nesne tanımla. İçinde ekle(): string ve sil(): string metotları olsun; ekle "eklendi", sil "silindi" döndürsün. Dışarıdan Kutuphane.ekle ve Kutuphane.sil biçiminde çağır, sonuçları ayrı satırlarda yazdır.
Başlangıç kodu
// Kutuphane adında bir nesne tanımla
// ekle metodunu ekle, "eklendi" döndürsün
// sil metodunu ekle, "silindi" döndürsün
// her ikisini de çağır, sonuçları ayrı satırda yazdırÖrnek çözüm
const Kutuphane = {
ekle(): string {
return "eklendi";
},
sil(): string {
return "silindi";
}
};
console.log(Kutuphane.ekle());
console.log(Kutuphane.sil());Beklenen çıktı
eklendi silindi
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Yeni bir TypeScript projesi için kod organizasyonu önerisi nedir?
- Tek dosyada büyük bir namespace
- Dosya tabanlı module kullanımı Doğru cevap
- Yalnızca global değişkenler
- Hiçbir organizasyon yapmamak
Açıklama: Yeni projelerde dosya tabanlı module kullanımı önerilir. Namespace eski bir desendir; global değişkenler ve organizasyonsuzluk kötü uygulamadır.
2 Namespace bildir
____ Hesap {
export function topla(a: number, b: number): number {
return a + b;
}
}
namespace Hesap {
export function topla(a: number, b: number): number {
return a + b;
}
}
Açıklama: Global kapsamda gruplama için namespace anahtar kelimesi kullanılır. module dosya tabanlıdır; package ve scope TypeScript'te namespace bildirimi için anahtar kelime değildir.
3 Namespace ve module karşılaştırması
| Kavram | Anlamı |
|---|---|
namespace Ad { } |
Global kapsam gruplama |
import { } from "./mod" |
Dosya tabanlı içe aktarma |
Ad.üye |
Namespace üye erişimi |
her dosya kendi kapsamında |
Module kapsülleme kuralı |