1. Union-TypDer sogenannte Union-Typ dient zum Definieren einiger Typen. Die definierten Variablen müssen nur einem Typ genügen. Der Union-Typ wird mit | definiert. Der Beispielcode lautet wie folgt: // Definieren Sie den Union-Typ durch das | Symbol let value: number | boolean | string = 'Union-Typ' Wert = 18 Im obigen Code definieren wir eine Wertvariable, die vom Typ Zahl, Boolean oder Zeichenfolge sein kann. 2. Crossover-TypWir führen Vereinigungstypen ein und betrachten dann Schnittmengentypen, die den Vereinigungstypen sehr ähnlich sind. Der sogenannte Kreuztyp muss alle Typen erfüllen und wird mit dem Symbol & definiert. Der Beispielcode lautet wie folgt: // Drei allgemeine Schnittstellentypen definieren Schnittstellenname { Name: Zeichenfolge } Schnittstelle Alter { Alter: Anzahl } Schnittstelle Hobby { Hobby: Schnur } //Definiere ein Objekt, das ein Vereinigungstyp der drei oben genannten Objekte ist let person: Name & Alter & Hobby = { // Wenn ein Typ nicht zugeordnet ist, wird eine Ausnahme ausgelöst. Name: '一碗周', Alter: 18, Hobby: 'Programmieren', } 3. TypenschutzJetzt haben wir eine Anforderung: Holen Sie sich die erste Zahl in einem Array beliebigen Typs. Der Implementierungscode lautet wie folgt: // Definiere ein Array, das eine Zahl oder einen String enthält const arr: (Zahl | String)[] = [1, 'Zahl'] // Durchlaufe das Array und gib die erste Zahl zurück const getValue: (arr: (number | string)[]) => number = ( arr: (Zahl | Zeichenfolge)[], ): Zahl => { für (sei i = 0; i < arr.length; i++) { // Wenn der aktuelle Wert bei der Konvertierung in eine Zahl kein NaN ist, returniere if (!isNaN(Number(arr[i]))) { return arr[i] // Der Typ „Zeichenfolge | Zahl“ kann nicht dem Typ „Zahl“ zugewiesen werden. } } } Im obigen Code ist bei Die oben genannten Funktionen können durch Typzusicherungen erreicht werden. Der Beispielcode lautet wie folgt: const getValue: (arr: (Zahl | Zeichenfolge)[]) => Zahl = ( arr: (Zahl | Zeichenfolge)[], ): Zahl => { für (sei i = 0; i < arr.length; i++) { // Wenn der aktuelle Wert bei der Konvertierung in eine Zahl kein NaN ist, returniere if (!isNaN(Number(arr[i]))) { return arr[i] as number // Sag dem Compiler, dass ich eine Zahl zurückgebe } } } Was ist eine Typbehauptung? Siehe: Typbehauptung Wenn Sie zur Erklärung Typbehauptungen verwenden, wird es umständlicher, wenn der gewünschte Datentyp ein anderer ist. Derzeit ist zum Ausführen dieser Funktion ein Typschutz erforderlich. Es gibt drei Hauptarten von Typenschutz: 3.1 Benutzerdefinierter Typschutz Benutzerdefinierter Typschutz wird durch die Definition einer Funktion definiert, deren Rückgabestruktur die Form Der Beispielcode lautet wie folgt: // Benutzerdefinierten Typschutz verwenden // 1. Definieren Sie eine Funktion, deren Rückgabewert ein Typprädikat ist, d. h. Parametername ist Typ, was die Form von Parametername ist Typfunktion ist Nummer (Wert: Nummer | Zeichenfolge): Wert ist Nummer { hat. // Wenn true zurückgegeben wird, bedeutet dies, dass der übergebene Wert der Typ nach ist return !isNaN(Zahl(Wert)) } // 2. Definieren Sie eine Funktion zum Abrufen einer Zahl const getNumber: (value: number | string) => number = ( Wert: Zahl | Zeichenfolge, ): Zahl => { // Wenn der Wert des Aufrufs isNumber wahr ist, bedeutet das, dass der Wert eine Zahl ist. Gib also die Zahl zurück, wenn (isNumber(value)) { Rückgabewert } } // 3. Aufruf zum Abrufen des endgültigen Wertes const getValue: (arr: (number | string)[]) => number = ( arr: (Zahl | Zeichenfolge)[], ): Zahl => { für (sei i = 0; i < arr.length; i++) { // Wenn eine Zahl zurückgegeben wird, konvertieren Sie sie in den booleschen Wert true wenn (getNumber(arr[i]) || getNumber(arr[i]) === 0) { gebe Nummer zurück(arr[i]) } } } Der Grund für die Definition der zweiten Funktion liegt darin, dass es immer noch Probleme gibt, i direkt als Rückgabewert im Array zu verwenden. Daher wird eine Funktion als Übergang definiert. 3.2Typ des Typschutzes Das Schlüsselwort typeof in Dies reicht für diese Anforderung aus. Als nächstes sehen wir uns an, wie der Typenschutz durch Der Beispielcode lautet wie folgt: // 1. Definieren Sie eine Funktion zum Abrufen einer Zahl const getNumber: (value: number | string) => number = ( Wert: Zahl | Zeichenfolge, ): Zahl => { //Überprüfen Sie, ob der aktuelle Wert ein String ist. Wenn ja, geben Sie den aktuellen Wert zurück, wenn (Typ des Wertes === 'Zahl') { Rückgabewert } } // 2. Aufruf zum Abrufen des endgültigen Wertes const getValue: (arr: (number | string)[]) => number = ( arr: (Zahl | Zeichenfolge)[], ): Zahl => { für (sei i = 0; i < arr.length; i++) { // Wenn eine Zahl zurückgegeben wird, konvertieren Sie sie in den booleschen Wert true wenn (getNumber(arr[i]) || getNumber(arr[i]) === 0) { gebe Nummer zurück(arr[i]) } } } 3.3Instanz des Typschutzes Der Beispielcode lautet wie folgt: /** * Da instanceof nur Referenztypen und keine primitiven Typen unterstützt, müssen wir hier einige Änderungen vornehmen und das Array wie folgt ändern: */ const arr2: (Zahl | Zeichenfolge)[] = [neue Zeichenfolge('Zahlenwert'), neue Zahl(10)] // 1. Definieren Sie eine Funktion zum Abrufen einer Zahl const getNumber: (Wert) => Zahl = (Wert): Zahl => { //Bestimmen Sie, ob der aktuelle Wert vom Typ „Zahl“ ist, konvertieren Sie den aktuellen Wert in einen String und geben Sie zurück, wenn (Wertinstanz von „Zahl“) { gibt Zahl(Wert) zurück } } // 2. Aufruf zum Abrufen des endgültigen Wertes const getValue: (arr: (Number | String)[]) => number = ( arr: (Zahl | Zeichenfolge)[], ): Zahl => { für (sei i = 0; i < arr.length; i++) { // Wenn eine Zahl zurückgegeben wird, konvertieren Sie sie in den booleschen Wert true wenn (getNumber(arr[i]) || getNumber(arr[i]) === 0) { gebe Nummer zurück(arr[i]) } } } Bei der Verwendung von instanceof sind zwei Punkte zu beachten:
Damit ist dieser Artikel zu TypeScript-Union-Typen, Schnittmengentypen und Typschutz abgeschlossen. Weitere Informationen zu TypeScript-Union-Typen, Schnittmengentypen und Typschutz 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:
|
<<: Grundlegende Verwendung von @Font-face und wie man es mit allen Browsern kompatibel macht
>>: Verwenden Sie HTML, um eine einfache E-Mail-Vorlage zu schreiben
Breite: automatisch Das untergeordnete Element (e...
1. Grundlegende Implementierung des Limits Im All...
1. Dateistruktur des Tools-Verzeichnisses [root@w...
Verwenden Sie gespeicherte Prozeduren, um Transak...
Unter Linux wird Bash als Standard übernommen, wa...
Inhaltsverzeichnis Überprüfung der responsiven Pr...
1. Konfigurieren Sie den Docker-Remoteverbindungs...
Prinzip Setzen Sie beim Schweben einen Schatten a...
<br />Die Benutzererfahrung wird von chinesi...
(Teil 4) Webstandards bestehen aus einer Reihe von...
Vorwort Bei der Entwicklung statischer Seiten, wi...
Inhaltsverzeichnis Fehlermeldung Ursache Fehlerde...
Eine einfache Nummernschild-Eingabekomponente (vu...
Inhaltsverzeichnis Methode 1: Rufen Sie die Funkt...
1. Installation des MySQL RPM-Pakets # Laden Sie ...