Novus Tec← Alle Artikel

Webentwicklung4 Min.

TypeScript Module und Namespaces

In TypeScript gibt es zwei wichtige Möglichkeiten, um den Code zu organisieren: Module und Namespaces. Beide Konzepte helfen dabei, größere Codebasen in kleinere, logischere Einheiten zu unterteilen und Kollisionen von Namen zu vermeiden. In diesem Artikel werden wir das Modul-System von TypeScript, die Verwendung von Imports und Exports sowie die Unterschiede zwischen Modulen und Namespaces beleuchten.

Module-System in TypeScript

Module in TypeScript sind Dateien, die Code kapseln und exportieren, sodass er in anderen Dateien wiederverwendet werden kann. Jedes Modul hat seinen eigenen Gültigkeitsbereich (Scope), was bedeutet, dass Variablen, Funktionen oder Klassen, die in einem Modul definiert sind, standardmäßig nicht außerhalb dieses Moduls zugänglich sind, es sei denn, sie werden explizit exportiert.

TypeScript verwendet das moderne ECMAScript-Modul-System (ESM), das auf den ECMAScript-Standards basiert und in den meisten modernen JavaScript-Umgebungen (wie Node.js und Browsern) unterstützt wird. Module sind ideal für die Strukturierung und Organisation von Code, insbesondere bei größeren Projekten.

Jede TypeScript-Datei kann als Modul betrachtet werden, wenn sie entweder etwas exportiert oder von einer anderen Datei etwas importiert. Beispiel einer Modulstruktur:

// math.ts - Modul, das Funktionen exportiert
export function add(x: number, y: number): number {
  return x + y;
}

export function subtract(x: number, y: number): number {
  return x - y;
}
// app.ts - Import des Moduls
import { add, subtract } from './math';

console.log(add(5, 3));      // Ausgabe: 8
console.log(subtract(10, 4)); // Ausgabe: 6

In diesem Beispiel exportiert das Modul `math.ts` zwei Funktionen, die dann im `app.ts`-Modul importiert und verwendet werden.

Import und Export von Modulen

Der Import und Export von Modulen in TypeScript basiert auf den ECMAScript-Standards. Es gibt zwei Hauptmethoden, um Elemente in einem Modul zu exportieren: named exports und default exports. Mehrere benannte Exports können aus einem Modul exportiert werden. Diese müssen beim Import unter demselben Namen importiert werden.

  // Named Exports in math.ts
  export function multiply(x: number, y: number): number {
    return x * y;
  }

  export function divide(x: number, y: number): number {
    return x / y;
  }

  // Import der Funktionen
  import { multiply, divide } from './math';

  console.log(multiply(6, 3));  // Ausgabe: 18
  console.log(divide(12, 4));   // Ausgabe: 3

Es kann nur ein `default export` pro Modul geben. Der Name des Imports kann beliebig gewählt werden.

  // Default Export in greet.ts
  export default function greet(name: string): void {
    console.log(`Hello, ${name}`);
  }

  // Import des Default Exports
  import greet from './greet';

  greet("Philipp"); // Ausgabe: Hello, Philipp

Default Exports eignen sich gut für Module, die nur eine zentrale Funktion oder Klasse bereitstellen.

Es ist auch möglich, das gesamte Modul als Objekt zu importieren und auf die Exporte über dieses Objekt zuzugreifen:

  import * as math from './math';

  console.log(math.add(4, 2));       // Ausgabe: 6
  console.log(math.subtract(10, 5)); // Ausgabe: 5

Unterschiede zwischen Modulen und Namespaces

Während Module und Namespaces in TypeScript ähnliche Ziele verfolgen, gibt es signifikante Unterschiede zwischen ihnen.

Module:

Module sind der empfohlene Weg zur Organisation von Code, da sie dem JavaScript-Standard folgen und in modernen Entwicklungsumgebungen weit verbreitet sind.

Namespaces:

    namespace MathOperations {
      export function add(x: number, y: number): number {
        return x + y;
      }
      export function subtract(x: number, y: number): number {
        return x - y;
      }
    }

    console.log(MathOperations.add(5, 3)); // Ausgabe: 8
    console.log(MathOperations.subtract(10, 4)); // Ausgabe: 6

Unterschiede:

Fazit

TypeScript-Module und Namespaces bieten unterschiedliche Möglichkeiten, Code zu strukturieren und zu organisieren. Während Namespaces in älteren Projekten oder für die Organisation von Code innerhalb einer Datei nützlich sind, sind Module die moderne und bevorzugte Methode, um Code in Dateien zu trennen und zu importieren/exportieren. TypeScript-Module basieren auf den ECMAScript-Standards und bieten eine saubere, standardkonforme Lösung, um Code wartbar und wiederverwendbar zu gestalten.

Weiterlesen

Webentwicklung5 Min.Angular-Module und Lazy Loading: Optimierung durch eine modulare ArchitekturDie modulare Architektur von Angular ist ein zentraler Aspekt des Frameworks, der es Entwicklern ermöglicht, große Anwendungen in handhabbare, wiederverwendbare Teile zu zerlegen. Mit Lazy Loading lässt sich die Ladezeit von Angular-Anwendungen erheblich optimieren, indem nicht benötigte Module …Webentwicklung4 Min.Einrichten eines Angular-ProjektsWenn du planst, eine Webanwendung mit Angular zu erstellen, ist es wichtig, von Anfang an eine solide Entwicklungsumgebung einzurichten. In diesem Artikel zeigen wir dir, wie du Schritt für Schritt ein neues Angular-Projekt aufsetzt und welche Tools dir dabei helfen. Voraussetzungen für Angular …Webentwicklung1 Min.Entdecke die Welt von AngularIn der schnelllebigen Welt der Webentwicklung ist es entscheidend, ein Framework zu wählen, das nicht nur leistungsfähig und flexibel ist, sondern auch die Produktivität steigert und die Wartung erleichtert. Angular, entwickelt und ständig erweitert von Google, steht als eines der führenden …