0Pricing
TypeScript Academy · Lektion

Namespaces vs. Module: moderne Verwendung

Verstehen Sie, warum Module gegenüber Namespaces bevorzugt werden.

Namespaces vs. Module: moderne Verwendung ist eine kostenlose TypeScript Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des TypeScript Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der TypeScript Academy-Kurs umfasst insgesamt 4 Lektionen.

Willkommen

TypeScript verwendete ursprünglich Namespaces (früher „interne Module“), um Code zu organisieren. Modernes TypeScript verwendet stattdessen ES-Module. In dieser Lektion erfahren Sie, wann welche Variante geeignet ist.

Was ist ein Namespace

Ein Namespace ist eine TypeScript-spezifische Möglichkeit, zusammengehörigen Code mithilfe des Schlüsselworts `namespace` unter einem benannten Gültigkeitsbereich zu gruppieren.
namespace Geometry {
  export interface Point { x: number; y: number; }
  export function distance(a: Point, b: Point): number {
    return Math.sqrt((a.x - b.x) ** 2 + (a.y - b.y) ** 2);
  }
}

Auf Namespace-Mitglieder zugreifen

Greifen Sie über den Namen des Namespaces und die Punktnotation auf Namespace-Mitglieder zu.
const p1: Geometry.Point = { x: 0, y: 0 };
const p2: Geometry.Point = { x: 3, y: 4 };
const d = Geometry.distance(p1, p2); // 5

Verschachtelte Namespaces

Namespaces können verschachtelt werden.
namespace App {
  export namespace Models {
    export interface User { name: string; }
  }
}
const u: App.Models.User = { name: 'Alice' };

Zusammenführen von Namespaces

Namespaces unterstützen das Zusammenführen von Deklarationen: Zwei Namespace-Deklarationen mit demselben Namen werden zusammengeführt.
namespace Validation {
  export function validate(s: string): boolean { return s.length > 0; }
}
namespace Validation {
  export function sanitize(s: string): string { return s.trim(); }
}

Warum Module bevorzugt werden

ES-Module sind der JavaScript-Standard. Sie werden von allen Bundlern unterstützt, effizient per Tree Shaking optimiert und funktionieren nativ in modernen Browsern und Node.js.

Das Moduläquivalent eines Namespaces

In modernem TypeScript wird ein Namespace einfach zu einer Datei. Exportieren Sie, was öffentlich sein soll, und halten Sie den Rest privat.
// geometry.ts
export interface Point { x: number; y: number; }
export function distance(a: Point, b: Point): number {
  return Math.sqrt((a.x - b.x) ** 2 + (a.y - b.y) ** 2);
}

Namespaces werden weiterhin in Deklarationsdateien verwendet

Namespaces werden in .d.ts-Deklarationsdateien für globale Bibliotheken (wie DOM-Typen und Node.js-Typen) weiterhin häufig verwendet, da sie den globalen Gültigkeitsbereich erweitern.
// node.d.ts
declare namespace NodeJS {
  interface ProcessEnv { NODE_ENV?: 'development' | 'production'; }
}

Triple-Slash-Referenzen (veraltet)

Vor ES-Modulen verwiesen Triple-Slash-Direktiven auf andere Dateien. Heute werden sie durch tsconfig-Includes und Modulimporte ersetzt.
/// <reference types="node" />
/// <reference path="./other.d.ts" />

Wann Namespaces weiterhin verwendet werden

Verwenden Sie Namespaces: (1) in Deklarationsdateien für globale Ambient-Typen, (2) beim Erweitern vorhandener globaler Namespaces aus Bibliotheken.

Migration von Namespaces zu Modulen

Ersetzen Sie `namespace Foo {}` durch eine Moduldatei. Ersetzen Sie `/// ` durch Importe. Das TypeScript-Team hat diesen Migrationsweg dokumentiert.

Kurztest

Was ist in modernem TypeScript der empfohlene Ersatz für Namespaces?

Zusammenfassung

Namespaces organisieren Code unter einem benannten Gültigkeitsbereich, gelten in modernem TypeScript jedoch als veraltet. Verwenden Sie für Anwendungscode ES-Module (import/export). In Deklarationsdateien bleiben Namespaces für die Erweiterung globaler Typen nützlich.

Häufig gestellte Fragen

Ist die Lektion „Namespaces vs. Module: moderne Verwendung“ kostenlos?

Ja — der vollständige Text von „Namespaces vs. Module: moderne Verwendung“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des TypeScript Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der TypeScript Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Namespaces vs. Module: moderne Verwendung“?

Verstehen Sie, warum Module gegenüber Namespaces bevorzugt werden. Du übst TypeScript Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um TypeScript Academy zu starten?

Keine Vorkenntnisse erforderlich. TypeScript Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „Namespaces vs. Module: moderne Verwendung“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser TypeScript Academy-Lektion Code schreiben und ausführen?

Ja. Jede TypeScript Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. ES-Modulsyntax: import und export
  2. Re-Exports und Barrel-Dateien
  3. Nur-Typ-Importe und -Exporte
  4. Namespaces vs. Module: moderne Verwendung
← Zurück zu TypeScript Academy