Vorwort: Aufzählungstypen werden mit enum definiert: Aufzählung Tag { SONNTAG, MONTAG, DIENSTAG, MITTWOCH, DONNERSTAG, FREITAG, SAMSTAG } Der oben definierte Aufzählungstyp Day hat 7 Werte. Aufzählung Tag { SONNTAG = 0, MONTAG = 1, DIENSTAG = 2, MITTWOCH = 3, DONNERSTAG = 4, FREITAG = 5, SAMSTAG = 6 } So sieht der obige Code nach der Übersetzung in JavaScript aus: var Tag = void 0; (Funktion (Tag) { Tag[Tag["SONNTAG"] = 0] = "SONNTAG"; Tag[Tag["MONTAG"] = 1] = "MONTAG"; Tag[Tag["DIENSTAG"] = 2] = "DIENSTAG"; Tag[Tag["MITTWOCH"] = 3] = "MITTWOCH"; Tag[Tag["DONNERSTAG"] = 4] = "DONNERSTAG"; Tag[Tag["FREITAG"] = 5] = "FREITAG"; Tag[Tag["SAMSTAG"] = 6] = "SAMSTAG"; })(Tag || (Tag = {})); Wie Sie sehen, ist jedem Wert eine entsprechende Nummer zugeordnet. In TypeScript müssen wir die Punktform verwenden, um die Mitglieder des Aufzählungssatzes zu erhalten: console.log(Tag.SONNTAG) // 0 console.log(Tag.MONTAG) // 1 Nachdem wir über die grundlegende Verwendung von Aufzählungstypen gesprochen haben, werfen wir einen Blick auf die gängigen Aufzählungstypen. 1. Digitale AufzählungWenn im obigen Beispiel nur der Konstantenname angegeben wird, wird eine Reihe von Zahlen definiert, die bei 0 beginnt und standardmäßig ansteigt. Dies wird als digitale Aufzählung bezeichnet. Wenn Sie mit dem Inkrementieren bei einem anderen Wert beginnen möchten, können Sie den Index des ersten Werts angeben: Aufzählung Farbe { Rot = 2, Blau, Gelb } console.log(Farbe.Rot, Farbe.Blau, Farbe.Gelb); // 2 3 4 Sie können einen Indexwert für ein Feld angeben. Die nicht angegebenen Indexwerte werden um eins erhöht: //Einige Felder angeben und für andere den inkrementellen Standardindex verwenden enum Status { Ok = 200, Erstellt, Akzeptiert, Ungültige Anfrage = 400, Nicht autorisiert } console.log(Status.Erstellt, Status.Akzeptiert, Status.Nicht autorisiert); // 201 202 401 Darüber hinaus können Sie für jedes Feld diskontinuierliche beliebige Indexwerte angeben: Aufzählungsstatus { Erfolg = 200, Nicht gefunden = 404, Fehler = 500 } console.log(Status.Erfolgreich, Status.Nicht gefunden, Status.Fehler); // 200 404 500 Numerische Aufzählungen können bei der Wertedefinition berechnete Werte und Konstanten verwenden. Beachten Sie jedoch, dass, wenn ein Feld einen berechneten Wert oder eine Konstante verwendet, das unmittelbar folgende Feld mit einem Anfangswert festgelegt werden muss. Der Standardinkrementwert kann hier nicht verwendet werden. Schauen wir uns ein Beispiel an: // Der Anfangswert ist der berechnete Wert const getValue = () => { gebe 0 zurück; }; enum ErrorIndex { a = getValue(), b, // Fehleraufzählungsmitglieder müssen Werte initialisiert haben c } enum RightIndex { a = getValue(), b = 1, C } // Der Anfangswert ist eine Konstante const Start = 1; Aufzählungsindex { a = Anfang, b, // Fehleraufzählungsmitglieder müssen Werte initialisiert haben c } 2. Zeichenfolgenaufzählung // Verwenden des Stringliteral-Enums Message { Error = "Entschuldigung, Fehler", Erfolg = „Hoho, Erfolg“ } console.log(Message.Error); // 'Entschuldigung, Fehler' // Andere Enumerationselemente im Enumerationswert verwenden enum Message { Error = "Fehlermeldung", ServerError = Fehler, ClientError = Fehler } console.log(Message.Error); // 'Fehlermeldung' console.log(Message.ServerError); // 'Fehlermeldung'
3. Rückwärtszuordnung Wenn Sie einen Wert vom Aufzählungstyp definieren, können Sie den entsprechenden Schauen wir uns das folgende Beispiel an: Aufzählungsstatus { Erfolg = 200, Nicht gefunden = 404, Fehler = 500 } console.log(Status["Erfolg"]); // 200 console.log(Status[200]); // 'Erfolg' console.log(Status[Status["Erfolg"]]); // 'Erfolg' Die in Schauen wir uns die Wirkung von { 200: „Erfolg“, 404: „Nicht gefunden“, 500: "Fehler", Fehler: 500, Nicht gefunden: 404, Erfolg: 200 } Wie Sie sehen, verwendet 4. Heterogene AufzählungHeterogene Aufzählungen sind Aufzählungen, deren Mitgliedswerte sowohl numerische als auch Zeichenfolgentypen haben, wie folgt: enum Ergebnis { Fehlgeschlagen = 0, Erfolg = "Erfolg" } Die Verwendung asynchroner Aufzählungen wird während der Entwicklung nicht empfohlen. Denn wenn eine Klasse von Werten in einem Aufzählungswert organisiert wird, sind ihre Eigenschaften häufig ähnlich. Wenn Sie beispielsweise eine Schnittstellenanforderung stellen, ist der Rückgabestatuscode ein numerischer Wert, und wenn es sich um eine Eingabeaufforderungsnachricht handelt, ist es eine Zeichenfolge. Daher ist es bei der Verwendung von Aufzählungen häufig möglich, die Verwendung heterogener Aufzählungen zu vermeiden, hauptsächlich durch die Organisation der Typen. 5. Konstante Aufzählung In Aufzählungsstatus { Aus, An } const enum Tier { Hund, Katze } const status = Status.Ein; const Tier = Tier.Hund; Der obige Code wird wie folgt in JavaScript kompiliert: var Status; (Funktion(Status) { Status[(Status["Aus"] = 0)] = "Aus"; Status[(Status["Ein"] = 1)] = "Ein"; })(Status || (Status = {})); var status = Status.Ein; var Tier = 0; // Hund Für die Verarbeitung von Durch die Definition einer Aufzählung von Konstanten können Sie eine Sammlung verwandter Konstanten in einer klaren, strukturierten Form verwalten. Da die Definitionen und Inline-Mitgliedswerte nach der Übersetzung gelöscht werden, sind außerdem die Codegröße und die Leistung nicht schlechter als beim direkten Inline-Einfügen von Konstantenwerten. 6. Aufzählungselementtypen und Union-AufzählungstypenWenn alle Mitglieder eines Aufzählungswerts Werte von Literaltypen sind, können jedes Mitglied der Aufzählung und der Aufzählungswert selbst als Typ verwendet werden. Wir nennen solche Aufzählungsmitglieder wörtliche Aufzählungsmitglieder. Es gibt drei Arten von Aufzählungselementwerten, die die Bedingungen erfüllen:
(1) AufzählungselementtypWenn alle Aufzählungsfälle wörtliche Aufzählungswerte haben, werden die Aufzählungsfälle zu Typen: Aufzählung Tier { Hund = 1, Katze = 2 } Schnittstelle Hund { Typ: Tier.Hund; } Schnittstelle Cat { Typ: Tier.Katze; } lass Katze: Katze = { Typ: Tier.Hund // Fehler [ts] Typ ‚Tier.Hund‘ kann nicht dem Typ ‚Tier.Katze‘ zugewiesen werden }; lass Hund: Hund = { Typ: Tier.Hund }; Wie Sie sehen, wird in der siebten Codezeile der Typ (2) Gemeinsamer AufzählungstypWenn ein Enumerationswert die Bedingungen erfüllt, kann er als ein Union-Typ betrachtet werden, der alle Mitglieder enthält: Aufzählungsstatus { Aus, An } Schnittstelle Licht { Status: Status; } Aufzählung Tier { Hund = 1, Katze = 2 } const light1: Licht = { Status: Tier.Hund // Fehler Typ „Tier.Hund“ kann nicht dem Typ „Status“ zugewiesen werden }; const light2: Licht = { Status: Status.Aus }; const light3: Licht = { Status: Status.Ein }; Das obige Beispiel definiert den Typ 7. AufzählungszusammenführungNachdem wir über gängige Aufzählungstypen gesprochen haben, werfen wir einen Blick auf das Konzept der Aufzählungszusammenführung. Für die Werte des Aufzählungstyps können wir sie separat deklarieren: Aufzählung Tag { SONNTAG, MONTAG, DIENSTAG } Aufzählung Tag { MITTWOCH, DONNERSTAG, FREITAG, SAMSTAG } Zu diesem Zeitpunkt führt var Tag = void 0; (Funktion (Tag) { Tag[Tag["SONNTAG"] = 0] = "SONNTAG"; Tag[Tag["MONTAG"] = 1] = "MONTAG"; Tag[Tag["DIENSTAG"] = 2] = "DIENSTAG"; Tag[Tag["MITTWOCH"] = 3] = "MITTWOCH"; Tag[Tag["DONNERSTAG"] = 4] = "DONNERSTAG"; Tag[Tag["FREITAG"] = 5] = "FREITAG"; Tag[Tag["SAMSTAG"] = 6] = "SAMSTAG"; })(Tag || (Tag = {})); Dies ist das Ende dieses Artikels über TypeScript-Aufzählungstypen. Weitere Informationen zu Das könnte Sie auch interessieren:
|
<<: Lösung für das Problem, dass englische Buchstaben in Firefox nicht umbrochen werden
>>: Implementierung von 2D- und 3D-Transformationen in CSS3
In diesem Artikelbeispiel wird der spezifische Co...
MongoDB -Installation Wählen Sie die Installation...
Inhaltsverzeichnis MySQL-Einschränkungsoperatione...
Konfigurieren des Alibaba Cloud Docker Container ...
Dies ist das erste Mal, dass ich das CentOS7-Syst...
Überblick Das Prototypmuster bezieht sich auf den...
Es wird empfohlen, Breite, Höhe etc. nicht direkt ...
Allgemeine nmcli-Befehle basierend auf RHEL8/Cent...
1. Erstellen Sie ein neues UI-Projekt Zunächst ei...
Vorwort HTTP ist ein zustandsloses Kommunikations...
In diesem Artikel wird der spezifische Code für J...
Inhaltsverzeichnis 1. Filtern, Zuordnen und Reduz...
Im Vergleich zu FTP bietet der SSH-basierte SFTP-...
1. Einleitung Wenn ein Webprojekt auf unserem Lin...
1. Globales Objekt Alle Module können aufgerufen ...