Union- und Intersection-Typen in TypeScript
Einführung
TypeScript, eine stark typisierte Obermenge von JavaScript, bringt robuste Typprüfungsfunktionen in die JavaScript-Entwicklung. Diese Funktionen helfen Entwicklern, Fehler frühzeitig zu erkennen und wartbareren Code zu schreiben. Zu den leistungsstarken Funktionen von TypeScript gehören Union Types und Intersection Types. Diese Typen bieten Flexibilität und Präzision bei der Definition komplexer Typen, was für umfangreiche Anwendungen von entscheidender Bedeutung sein kann.
Ziel dieses Artikels ist es, die Konzepte von Union- und Schnittmengentypen in TypeScript zu erläutern. Wir werden uns anhand eines Beispiels veranschaulichen, wie diese Typen kombiniert werden können, um eine aussagekräftigere Typdefinition zu erstellen. Am Ende dieses Artikels sollten Sie ein solides Verständnis dafür haben, wie Sie diese Typen effektiv in Ihren TypeScript-Projekten verwenden.
Okay, ohne weitere Umschweife, lasst uns eintauchen.
Fallstudie
Ich habe dieses Meme unten.
https://www.picturepunches.com/meme/317642
Es gibt eine unausgesprochene Regel in der Konversationskunst: Fragen Sie niemals eine Frau nach ihrem Alter und Fragen Sie niemals einen Mann nach seinem Gehalt. Aber lasst uns den Einsatz erhöhen und die Sache noch faszinierender machen. Stellen Sie sich eine dritte Regel vor: Fragen Sie niemals einen Programmierer nach der Anzahl seiner unvollendeten Projekte. Manche Geheimnisse bleiben am besten im Verborgenen – denn egal, ob es um Alter, Einkommen oder aufgegebene Nebenprojekte geht, die Antworten kommen oft mit Geschichten, die Sie möglicherweise nicht hören möchten.
OK, konzentrieren wir uns auf die ersten beiden Punkte: Mann und Frau.
Dont ask 1 | Dont ask 2 | Should ask 1 | Should ask 2 | |
---|---|---|---|---|
Man | Salary | Relationship | Address | Full name |
Woman | Age | Weight | Address | Full name |
In TypeScript könnten wir den Typ so erstellen:
type Person = { gender: 'man' | 'woman', dontAsk: 'salary' | 'relationship' | 'age' | 'weight' };
Das Problem besteht hier, wenn wir ein Objekt basierend auf dem Personentyp erstellen
const person1: Person = { gender: 'man', dontAsk: 'weight', }; const person2: Person = { gender: 'woman', dontAsk: 'salary', };
Beide beiden Objekte oben zeigen keinen Typfehler.
Schnittpunkt- und Union-Typen lösen dieses Problem.
Union-Typen
A Union Type ermöglicht, dass eine Variable einer von mehreren Typen sein kann. In unserem Beispiel:
{ gender: 'man', dontAsk: 'salary' | 'relationship' } | { gender: 'woman', dontAsk: 'weight' | 'size' }
In diesem Teil der Typdefinition heißt es, dass eine Person eine von zwei Formen haben kann:
- Ein Objekt mit dem Geschlecht „Mann“ und „dontAsk“, das entweder „Gehalt“ oder „Beziehung“ bedeutet.
- Ein Objekt mit Geschlecht: „Frau“ und „DontAsk“ bedeutet entweder „Gewicht“ oder „Alter“.
Diese Flexibilität ist nützlich, wenn Sie mit Daten arbeiten, die mehrere Formen annehmen können.
Kreuzungstypen
Ein Kreuzungstyp kombiniert mehrere Typen zu einem. Eine Variable eines Schnittpunkttyps muss alle konstituierenden Typen erfüllen. In unserem Beispiel:
& { address?: string, fullName: string }
In diesem Teil der Typdefinition heißt es, dass eine Person Folgendes haben muss:
- Eine optionale Adresseigenschaft vom Typ String.
- Eine erforderliche fullName-Eigenschaft vom Typ string.
Kombinieren von Union- und Intersection-Typen
Der vollständige Typ „Person“ kombiniert sowohl Vereinigungs- als auch Schnittmengentypen:
type Person = ({ gender: 'man', dontAsk: 'salary' | 'relationship' } | { gender: 'woman', dontAsk: 'weight' | 'age' }) & { address?: string, fullName: string };
Ein Personenobjekt muss mit einem der Vereinigungstypen übereinstimmen und außerdem die im Schnittpunkttyp definierten Eigenschaften enthalten. Hier sind einige gültige Personenobjekte:
const person1: Person = { gender: 'man', dontAsk: 'salary', fullName: 'John Doe' }; const person2: Person = { gender: 'woman', dontAsk: 'weight', fullName: 'Jane Doe', address: '123 Main St' };
Wenn „Person1 definieren, nicht nach Alter fragen“, wird ein Fehler angezeigt. In Visual Studio Code, das über eine integrierte Unterstützung für TypeScript verfügt, wird ein Fehler angezeigt, wenn wir den Mauszeiger über das Objekt bewegen.
Zusammenfassung
In TypeScript ermöglichen Union Types einer Variablen, einer von mehreren Typen zu sein, während Intersection Types mehrere Typen zu einem kombinieren. Wenn Sie diese Typen verstehen und verwenden, können Sie flexibleren und robusteren TypeScript-Code schreiben. Das Beispiel für den Typ „Person“ veranschaulicht, wie diese Konzepte kombiniert werden, um komplexe und präzise Typdefinitionen zu erstellen.
Die effektive Verwendung von TypeScript kann die Wartbarkeit des Codes erheblich verbessern. Wenn ein neuer Entwickler Ihrem Team beitritt, reduzieren klare Typdefinitionen den Bedarf an langwierigen Erklärungen. Anstatt Code zu entschlüsseln, kann sich das Team auf die Diskussion des Projektablaufs und der Ziele konzentrieren und so die Produktivität und Zusammenarbeit steigern.
Das obige ist der detaillierte Inhalt vonUnion- und Intersection-Typen in TypeScript. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Detaillierte Erläuterung der Methode für JavaScript -Zeichenfolge und FAQ In diesem Artikel werden zwei Möglichkeiten untersucht, wie String -Zeichen in JavaScript ersetzt werden: Interner JavaScript -Code und interne HTML für Webseiten. Ersetzen Sie die Zeichenfolge im JavaScript -Code Die direkteste Möglichkeit ist die Verwendung der Ersatz () -Methode: str = str.replace ("find", "ersetzen"); Diese Methode ersetzt nur die erste Übereinstimmung. Um alle Übereinstimmungen zu ersetzen, verwenden Sie einen regulären Ausdruck und fügen Sie das globale Flag G hinzu:: STR = Str.Replace (/fi

Einfache JavaScript -Funktionen werden verwendet, um zu überprüfen, ob ein Datum gültig ist. Funktion isvaliddate (s) { var bits = ssplit ('/'); var d = neues Datum (Bits [2] '/' Bits [1] '/' Bits [0]); return !! (d && (d.getMonth () 1) == Bits [1] && d.getDate () == Nummer (Bits [0])); } //prüfen var

In diesem Artikel wird erläutert, wie JQuery verwendet wird, um die inneren Rand- und Randwerte von DOM -Elementen zu erhalten und festzulegen, insbesondere die spezifischen Orte des äußeren Randes und der inneren Ränder des Elements. Während es möglich ist, die inneren und äußeren Ränder eines Elements mit CSS einzustellen, kann es schwierig sein, genaue Werte zu erhalten. // aufstellen $ ("Div.Header"). CSS ("Margin", "10px"); $ ("Div.Header"). CSS ("Padding", "10px"); Sie könnten denken, dieser Code ist

In diesem Artikel werden zehn außergewöhnliche JQuery -Registerkarten und Akkordeons untersucht. Der wichtigste Unterschied zwischen Registerkarten und Akkordeons liegt in der angezeigten und versteckten Inhaltsplatten. Lassen Sie uns mit diesen zehn Beispielen befassen. Verwandte Artikel: 10 JQuery Registerkarte Plugins

Entdecken Sie zehn außergewöhnliche JQuery -Plugins, um die Dynamik und die visuelle Anziehungskraft Ihrer Website zu verbessern! Diese kuratierte Sammlung bietet verschiedene Funktionen, von Bildanimation bis hin zu interaktiven Galerien. Lassen Sie uns diese leistungsstarken Tools untersuchen: Verwandte Beiträge: 1

HTTP-Console ist ein Knotenmodul, mit dem Sie eine Befehlszeilenschnittstelle zum Ausführen von HTTP-Befehlen erhalten. Es eignet sich hervorragend zum Debuggen und dem genauen Sehen, was mit Ihren HTTP

Dieses Tutorial zeigt Ihnen, wie Sie eine benutzerdefinierte Google -Such -API in Ihr Blog oder Ihre Website integrieren und ein raffinierteres Sucherlebnis bieten als Standard -WordPress -Themen -Suchfunktionen. Es ist überraschend einfach! Sie können die Suche auf y beschränken

Mit dem folgenden JQuery -Code -Snippet können Scrollbars hinzugefügt werden, wenn der Div -Inhalt den Containerelementbereich überschreitet. (Keine Demonstration, bitte kopieren Sie es direkt nach Firebug) // d = Dokument // W = Fenster // $ = jQuery var contentArea = $ (this), wintop = contentArea.scrolltop (), docheight = $ (d) .height (), winHeight = $ (w) .height (), Divheight = $ ('#c


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Dreamweaver CS6
Visuelle Webentwicklungstools

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

SAP NetWeaver Server-Adapter für Eclipse
Integrieren Sie Eclipse mit dem SAP NetWeaver-Anwendungsserver.

mPDF
mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),

Herunterladen der Mac-Version des Atom-Editors
Der beliebteste Open-Source-Editor
