CodeBlanks Logo Icon CodeBlanks

İç içe namespace

İç içe namespace'leri öğrenirsin.

İç içe namespace

Namespace'ler iç içe tanımlanabilir. namespace Dis { export namespace Ic { ... } } yazımı ile bir namespace'i başka bir namespace içinde dışa aktarabilirsin. Dışarıdan üyeye Dis.Ic.üye biçiminde nokta zinciriyle erişilir.

namespace Dis {
  export namespace Ic {
    export function f() {
      return "iç";
    }
  }
}
console.log(Dis.Ic.f());  // "iç"

Her seviye export olmalı

İç içe namespace'lerde, dışarıdan erişilebilir olması için hem dış hem iç namespace'in export ile işaretlenmesi gerekir. Aksi halde iç namespace dışarıdan görünmez olur ve Dis.Ic.üye erişimi derleme hatası verir.

Uygulama İç içe yapıyı uygula

İç içe namespace yapısının derleme sonrası eşdeğeri, iç içe nesne deseniyle ifade edilir. Dis adında bir nesne tanımla; içinde Ic adında iç nesne olsun. Ic içinde f(): string metodu return "iç" gövdesiyle bulunsun. Dışarıdan iç yola nokta zinciriyle çağır ve sonucu console.log ile yazdır.

Başlangıç kodu

index.ts
// Dis adında bir nesne tanımla
// Ic adında iç nesne ekle
// f metodunu ekle, "iç" döndürsün
// f metodunu çağır, sonucu yazdır

Örnek çözüm

index.ts
const Dis = {
  Ic: {
    f(): string {
      return "iç";
    }
  }
};
console.log(Dis.Ic.f());

Beklenen çıktı

iç

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 İç içe bir namespace'teki üyeye nasıl erişilir?

  • import Ic from Dis ile
  • Yalnızca Ic.üye biçiminde
  • Dis::Ic::üye biçiminde
  • Dis.Ic.üye nokta zinciriyle Doğru cevap

Açıklama: İç içe namespace'te üyeye Dis.Ic.üye biçiminde nokta zinciriyle erişilir. Yalnızca Ic.üye çalışmaz çünkü Ic dışarıdan doğrudan görünmez; :: C++ sözdizimidir; import module içe aktarma içindir.

2 İç namespace'e eriş

Soru
namespace Dis {
  export namespace Ic {
    export function f(): string {
      return "iç";
    }
  }
}
console.log(Dis.____.f());
Cevap
namespace Dis {
  export namespace Ic {
    export function f(): string {
      return "iç";
    }
  }
}
console.log(Dis.Ic.f());

Açıklama: Dis.Ic.f() çağrısında iç namespace adı Ic kullanılır. Ic.f yanlış çift erişim oluşturur; f tek başına fonksiyon yolunu belirtmez; Dis zaten dışarıdaki ilk ad.

3 İç içe namespace parçaları

Kavram Anlamı
export namespace Ic İç namespace dışa aktarımı
namespace Dis Dış namespace bildirimi
Dis.Ic.f() Nokta zinciriyle çağrı
her seviye export İç içe görünürlük kuralı

Orta seviye bölümündeki tüm dersler