Namespaces sind ein effektives Mittel in TypeScript, um Code zu strukturieren und Namenskonflikte zu vermeiden. Sie sind besonders nützlich in größeren Anwendungen oder in Übergangsphasen zu ES2015+ Modulen.
Ein Namespace wird mit dem namespace Schlüsselwort
erstellt und kann Klassen, Schnittstellen und Funktionen enthalten:
namespace MyNamespace {
export interface SomeInterface { /* ... */ }
export class SomeClass { /* ... */ }
export function someFunction() { /* ... */ }
}Zugriff auf Elemente innerhalb des Namespaces erfolgt durch Voranstellen des Namespace-Namens:
let instance: MyNamespace.SomeClass = new MyNamespace.SomeClass();
let result = MyNamespace.someFunction();Namespaces können verschachtelt werden, um eine noch feinere Strukturierung zu erreichen:
namespace OuterNamespace {
export namespace InnerNamespace {
export class SomeClass { /* ... */ }
}
}
let instance = new OuterNamespace.InnerNamespace.SomeClass();Namespaces eignen sich gut für Projekte, in denen eine schrittweise Migration zu Modulen nicht möglich oder erwünscht ist. Sie haben jedoch Grenzen, insbesondere im Vergleich zu Modulen:
Während Namespaces in bestimmten Szenarien nützlich sein können, werden in modernen TypeScript-Projekten häufig ES2015+ Module bevorzugt:
Obwohl die Mischung von Namespaces und Modulen technisch möglich ist, kann sie Herausforderungen mit sich bringen, insbesondere in Bezug auf die Verwaltung von Abhängigkeiten und Tooling-Unterstützung.
Bei der Verwendung von Namespaces sollten Sie folgende Best Practices beachten: