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

So löschen Sie den gesamten Inhalt eines Verzeichnisses mit Ansible

Studierende, die Ansible verwenden, wissen, dass ...

MySQL-Optimierung: Cache-Optimierung

Ich freue mich, dass einige Blogger meinen Artike...

Asynchrone JS ES6-Lösung

Inhaltsverzeichnis Erste Verwendung der Callback-...

So ändern Sie die Ali-Quelle in Ubuntu 20.04

Beachten Sie, dass dieser Artikel Ihnen nicht ein...

Beispiel für eine MySQL-DML-Sprachoperation

Zusätzliche Erklärung, Fremdschlüssel: Verwenden ...

Zusammenfassung der grundlegenden Verwendung von CSS3 @media

//Grammatik: @media Medientyp und | nicht | nur (...

Eine kurze Erläuterung des zugrunde liegenden Prinzips von MySQL Join

Inhaltsverzeichnis Join-Algorithmus Der Unterschi...

Vue implementiert die Abfrage von Startzeit und Endzeitbereich

In diesem Artikel erfahren Sie, wie Sie den Start...

Lösung zum Vergessen des Passworts des Pagodenpanels in Linux 3.X/4.x/5.x

Geben Sie ssh ein und geben Sie den folgenden Bef...

Die Verwendung von Ankerpunkten in HTML_PowerNode Java Academy

Lassen Sie uns nun mehrere Situationen zur Steuer...

Beispiel für die Implementierung einer eingebetteten Tabelle mit vue+elementUI

Während meines Praktikums im letzten Studienjahr ...