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

Docker verwendet Dockerfile, um die Node.js-Anwendung zu starten

Schreiben einer Docker-Datei Am Beispiel des von ...

jQuery erzielt einen Bildlaufwiedergabeeffekt auf großem Bildschirm

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

Ausführliches Tutorial zur Installation von mysql 5.6.23 winx64.zip

Eine ausführliche Dokumentation zur Installation ...

Zusammenfassung der Wissenspunkte zur MySQL-Master-Slave-Replikation

Eine Optimierungslösung, wenn ein einzelner MySQL...

Natives JS zum Implementieren der Seitenleiste zum Teilen

Dieser Artikel zeigt eine mit nativem JS implemen...

So implementieren Sie verteilte Transaktionen in MySQL XA

Inhaltsverzeichnis Vorwort XA-Protokoll So implem...

Die Rolle und Öffnung des MySQL-Protokolls für langsame Abfragen

Vorwort Das MySQL Slow Query Log ist ein Protokol...

So installieren Sie suPHP für PHP5 auf CentOS 7 (Peng Ge)

Standardmäßig wird PHP unter CentOS 7 als Apache ...

So verwenden Sie die Baidu Map API im Vue-Projekt

Inhaltsverzeichnis 1. Registrieren Sie ein Konto ...

Grafisches Tutorial zur Installation und Konfiguration von MySQL 8.0.13

Installation der Msyql-Datenbank. Zu Ihrer Inform...

Verwenden Sie Docker, um ein Git-Image mithilfe des Klon-Repositorys zu erstellen

Überblick Ich verwende Docker seit über einem Jah...