Erläuterung der Zusammenführung von TypeScript-Namespaces

Erläuterung der Zusammenführung von TypeScript-Namespaces

Vorwort:
Wenn wir den Inhalt des vorherigen Abschnitts noch einmal durchgehen, haben wir im vorherigen Abschnitt die häufigste Deklarationszusammenführung in TS vorgestellt: die Schnittstellenzusammenführung

Wir verstehen, dass das Zusammenführen von Deklarationen tatsächlich bedeutet, dass der Compiler Deklarationen mit demselben Namen zu einer Deklaration zusammenführt. Das Ergebnis der Zusammenführung ist, dass die zusammengeführte Deklaration gleichzeitig die Merkmale der ursprünglichen zwei oder mehr Deklarationen aufweist.

Für die Schnittstellenzusammenführung ist erforderlich, dass die darin enthaltenen Mitglieder Funktionsmitglieder haben. Für die Funktionsmitglieder darin wird jede Funktionsdeklaration mit demselben Namen als Überladung dieser Funktion behandelt. Wenn Schnittstelle A mit der späteren Schnittstelle A zusammengeführt wird, hat die spätere Schnittstelle eine höhere Priorität.

Auch heute sprechen wir über das Zusammenführen von Deklarationen in TS, diesmal jedoch über das Zusammenführen von Namespaces

Es gibt zwei Hauptaspekte: Einer ist das Zusammenführen von Namespaces mit demselben Namen und der andere ist das Zusammenführen von Namespaces mit anderen Typen. Im Folgenden wird nacheinander beschrieben

Namespaces mit gleichem Namen zusammenführen

Ähnlich wie beim Zusammenführen von Schnittstellen werden auch die Mitglieder von zwei oder mehr Namespaces mit demselben Namen zusammengeführt.

Wie können wir es also konkret zusammenführen?

Beachten Sie beim Zusammenführen von Namespaces mit demselben Namen die folgenden vier Punkte:

  • Die vom Modul exportierten Schnittstellen mit gleichem Namen werden zu einer Schnittstelle zusammengeführt.
  • Nicht exportierte Mitglieder sind nur innerhalb ihres ursprünglichen Namespaces (vor der Zusammenführung) sichtbar. Das bedeutet, dass aus anderen Namespaces zusammengeführte Mitglieder nach der Zusammenführung nicht auf nicht exportierte Mitglieder zugreifen können.
  • Beim Zusammenführen von Werten gilt: Wenn die Namen der Werte gleich sind, hat der Wert im späteren Namespace eine höhere Priorität.
  • Für Mitglieder ohne Konflikte werden sie direkt eingemischt

Zum Beispiel:

Namespace Tiere {
    Exportklasse Katze { }
}

Namespace Tiere {
    Exportschnittstelle Legged { AnzahlBeine: Anzahl; }
    export Klasse Hund { }
}


ist gleichbedeutend mit:

Namespace Tiere {
    Exportschnittstelle Legged { AnzahlBeine: Anzahl; }

    Exportklasse Katze { }
    export Klasse Hund { }
}


Im obigen Beispiel werden zwei Namespaces mit demselben Namen, Animals , schließlich zu einem Namespace zusammengeführt. Das Ergebnis ist, dass drei nicht miteinander in Konflikt stehende Dinge direkt miteinander vermischt werden.

Namespaces und andere Arten der Zusammenführung

Namespaces können mit anderen Deklarationstypen kombiniert werden, etwa mit Klassen und Funktionen sowie mit Aufzählungstypen.

Zusammenführen von Namespaces und Klassen mit demselben Namen

Zum Beispiel:

Klasse Album {
    Bezeichnung: Album.AlbumLabel;
}
Namespace-Album {
    export class AlbumLabel { } // Exportiere die Klasse „AlbumLabel“, damit die fusionierte Klasse darauf zugreifen kann }


Durch die Zusammenführung eines Namespaces und einer Klasse entsteht eine Klasse mit einer inneren Klasse

Zusammenführen von Namespaces und Funktionen mit demselben Namen

Zusätzlich zum oben beschriebenen inneren Klassenmuster ist es in JavaScript auch üblich, eine Funktion zu erstellen und sie später zu erweitern, um einige Eigenschaften hinzuzufügen. Um dies zu erreichen und die Typsicherheit zu gewährleisten, verwendet TypeScript die Deklarationszusammenführung.

Zum Beispiel ein offizielles Beispiel:

Funktion BuildLabel (Name: Zeichenfolge): Zeichenfolge {
    gibt BuildLabel.Präfix + Name + BuildLabel.Suffix zurück;
}

Namespace BuildLabel {
    exportiere let Suffix = "";
    export let Präfix = "Hallo, ";
}

console.log(buildLabel("Sam Smith"));


Namespace und Aufzählung mit gleichem Namen

Es kann verwendet werden, um Aufzählungen zu erweitern. Schauen wir uns die offiziellen Beispiele an.

Aufzählung Farbe {
    rot = 1,
    grün = 2,
    blau = 4
}

Namespace Farbe {
    Exportfunktion MixColor (Farbname: Zeichenfolge) {
        wenn (Farbname == "gelb") {
            gibt Farbe.rot + Farbe.grün zurück;
        }
        sonst wenn (Farbname == "weiß") {
            gibt Farbe.rot + Farbe.grün + Farbe.blau zurück;
        }
        sonst wenn (Farbname == "magenta") {
            gibt Farbe.rot + Farbe.blau zurück;
        }
        sonst wenn (Farbname == "Cyan") {
            gibt Farbe.grün + Farbe.blau zurück;
        }
    }
}

Beachten:
Nicht alles kann zusammengeführt werden. Beachten Sie, dass Klassen nicht mit anderen Klassen oder Variablen zusammengeführt werden können.

Dies ist das Ende dieses Artikels über das Zusammenführen von TS-Namespaces. Weitere Informationen zum Zusammenführen von TS-Namespaces finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Erläuterung des TypeScript-Namespace
  • Eine kurze Analyse des TypeScript-Namespace

<<:  Detaillierte Erklärung zur Verwendung von Bild-Tags in HTML

>>:  Tutorial zum Erstellen einer persönlichen NextCloud-Netzwerkfestplatte mit Docker

Artikel empfehlen

Beispiel für die Einrichtung eines mehrspaltigen Layouts gleicher Höhe mit CSS

Mehrere Spalten haben zunächst unterschiedliche I...

So verwenden Sie Xtrabackup zum Sichern und Wiederherstellen von MySQL

Inhaltsverzeichnis 1. Sicherung 1.1 Vollständig v...

Erläuterung des HTML-Tabellenlayouts als Beispiel

Die Elemente in einem HTML-Dokument werden hinter...

Implementierung der schnellen Projektkonstruktion von vue3.0+vant3.0

Inhaltsverzeichnis 1. Projektkonstruktion 2. Vue3...

Ein einfaches Beispiel zur Implementierung einer Fuzzy-Abfrage in Vue

Vorwort Die sogenannte Fuzzy-Abfrage dient dazu, ...

So installieren Sie die Linux-Onlinesoftware gcc online

Befehle zur Linux-Onlineinstallation: yum install...

So ändern Sie die Farbe der gesamten Zeile (tr), wenn die Maus in HTML stoppt

Verwenden Sie reines CSS, um die Hintergrundfarbe...

So erreichen Sie die maximale Anzahl von Verbindungen in MySQL

Inhaltsverzeichnis Was ist der Grund für den plöt...

Codebeispiele für den Import und Export von Docker-Images

Import und Export von Docker-Images Dieser Artike...

vue+element-ui implementiert die Kopfnavigationsleistenkomponente

In diesem Artikel wird der spezifische Code von v...

MySQL-Lösung zum Erstellen eines horizontalen Histogramms

Vorwort Histogramme sind grundlegende statistisch...

Einfache Verwendung von temporären MySQL-Tabellen

Temporäre MySQL-Tabellen sind sehr nützlich, wenn...

MySQL-8.0.26 Konfigurationsgrafik-Tutorial

Vorwort: Vor kurzem hat das Unternehmensprojekt d...