Die Rolle der Schnittstelle:Schnittstelle, auf Englisch: Interface, ihre Funktion kann einfach so verstanden werden: Bereitstellung einer Konvention für unseren Code.
Zum Beispiel: //Definieren Sie die Schnittstelle Person Schnittstelle Person { Name: Zeichenfolge; Alter: Anzahl; } //Geben Sie den Typ der definierten Variable man als unseren Personen-„Typ“ an [Dieser Ausdruck ist nicht sehr genau, dient nur dem besseren Verständnis] lass Mann: Person; // Wenn wir an diesem Punkt „man“ einen Wert zuweisen, muss „man“ die von uns definierten Personenbeschränkungen erfüllen. Das heißt, es muss ein Altersfeld vom Typ „Zahl“ und ein Namensfeld vom Typ „String“ vorhanden sein. man = { age: 10, name: 'syw' } # Oder so function fun(women:Person){} // Der Parameter women muss auch die Person-Einschränkung erfüllen Im obigen Beispiel habe ich kurz darüber gesprochen, wie man eine Schnittstelle und ihre Funktionen definiert. Jetzt werde ich kurz über andere Möglichkeiten sprechen, mit Schnittstellen zu spielen: Legen Sie die optionalen Schnittstelleneigenschaften fest:Eine Schnittstelle mit optionalen Attributen ähnelt einer normalen Schnittstellendefinition, mit dem Unterschied, dass nach der Definition des optionalen Attributnamens ein ?-Symbol hinzugefügt wird. Schnittstelle Person { Name: Zeichenfolge Alter?: Zahl } Optionale Attribute werden am häufigsten verwendet, wenn wir nicht sicher sind, ob dieser Parameter übergeben wird oder existiert.
Zusätzliche Eigenschaftsprüfungen:Apropos, eine einfache Zusammenfassung lautet: Wir können Attribute als optional festlegen, aber wir können keine falschen Attribute übergeben.
Dies ist die zusätzliche Eigenschaftsprüfung. Natürlich können wir auch Typbehauptungen verwenden, um diese Eigenschaftsprüfungen zu umgehen, siehe den Link: Typbehauptungen in TypeScript [as-Syntax | <>-Syntax] Legen Sie das schreibgeschützte Schnittstellenattribut fest:Einige Objekteigenschaften können nur beim ersten Erstellen des Objekts geändert werden. Daher können wir readonly vor dem Attributnamen verwenden, um ein schreibgeschütztes Attribut anzugeben. Schnittstelle Person { schreibgeschützter Name: Zeichenfolge; schreibgeschütztes Alter: Zahl; } // Anfangswerte zuweisen let man: Person = {name: 'syw', age: 10}; // Wenn Sie den Wert jetzt ändern, tritt ein Fehler auf. man.age = 20; // Fehler! // „Alter“ kann nicht zugewiesen werden, da es sich um eine schreibgeschützte Eigenschaft handelt. Tatsächlich ist die Wirkung der Verwendung schreibgeschützter Attribute ähnlich wie bei const. Natürlich sind die beiden überhaupt nicht dasselbe. Ich sage das nur zum leichteren Verständnis. In Typescript werden readonly und const wie folgt beschrieben: Funktionstyp-Schnittstelle: Einfach ausgedrückt gibt die Schnittstelle eines Funktionstyps die Parametertypen der Funktion und den Rückgabewerttyp der Funktion an. Schnittstelle PersonFun { (Name: Zeichenfolge, Alter: Zahl): Boolesch } // Definieren Sie eine Funktion, die die PersonFun-Einschränkung erfüllt let manFun: PersonFun = (name: string, age: number) => { Rückkehralter > 10; } Beachten:
// Dies erfüllt auch die Anforderungen let manFun: PersonFun = (name12: string, age12: number) => { Rückkehralter > 10; } Schnittstelle für indexierbaren Typ:Einfach ausgedrückt bedeutet die indizierbare Typschnittstelle, dass wir den Indextyp und den Typ des Rückgabewerts angeben können.
Schnittstelle PersonArr { [Index: Zahl]: Zeichenfolge } // Array definieren let manArr: PersonArr = ['syw','syw1','syw2']; // Abfrage manArr[0]; // Zu diesem Zeitpunkt ist 0 der Index der Typnummer und das 0. Element gibt syw vom Typ String zurück Typescript unterstützt zwei Arten von Indexsignaturen, die eigentlich Indextypen sind: Zahl und Zeichenfolge. Und wenn wir einen Index vom Zahlentyp verwenden, muss der definierte Rückgabewerttyp ein Untertyp des für den Index vom Zeichenfolgentyp definierten Rückgabewerts sein.
Als ich diesen Satz zum ersten Mal sah, verstand ich die Bedeutung des Textes, wusste aber nicht, wie ich ihn einfach ausdrücken sollte. Nach sorgfältigem Studium wurde mir klar, dass es vielleicht daran lag, dass ich mich noch nicht so gut damit auskenne. Eigentlich ist es ganz einfach: // Beispielsweise hat mein PersonArr zwei Indizes, einer ist vom Typ Index (Zahl) und der andere vom Typ Element (Zeichenfolge). Wenn ich die Rückgabewerte dieser beiden Indizes definiere, muss ich mich strikt an das Obige halten: // Wenn Sie einen Index vom Zahlentyp verwenden, muss der Rückgabewerttyp ein Untertyp des Rückgabewerts des Index vom Zeichenfolgentyp sein. // Daher wird die Schnittstelle, die ich unten definiere, einen Fehler melden. Schnittstelle PersonArr { [Index: Zahl]: Zeichenfolge; [Element: Zeichenfolge]: Zahl; } // Da der Index-Rückgabewert vom Typ String ist, handelt es sich offensichtlich nicht um einen Subtyp des Item-Rückgabewerts vom Typ Number. // Wie schreibe ich das richtig? Am einfachsten geht das, indem Sie den Typ des Indexrückgabewerts in eine Zahl ändern. Dies ist das Ende dieses Artikels über das Tutorial zur TypeScript-Schnittstellendefinition. Weitere verwandte Inhalte zur TypeScript-Schnittstellendefinition finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! Das könnte Sie auch interessieren:
|
<<: Lösen Sie das Problem, dass die Zeitzone in der Linux-Umgebung nicht eingestellt werden kann
>>: Installieren Sie Redis und MySQL auf CentOS
Die utf8mb4-Kodierung ist eine Obermenge der utf8...
Inhaltsverzeichnis Vorwort Was ist VirtualDOM? Gr...
Das Aufkommen von jQuery hat unsere Effizienz bei...
Da HTML-E-Mail keine unabhängige HOST-Seite auf di...
Am Samstag war der Redis-Server auf dem Produktio...
Inhaltsverzeichnis 1. existiert 1.1 Beschreibung ...
Inhaltsverzeichnis Warum WebSocket verwenden? Soc...
Absolute Länge px px ist der Pixelwert, also eine...
Während des jüngsten Entwicklungsprozesses handel...
Wie unten dargestellt: LOCATE(Teilzeichenfolge,Ze...
Geben Sie net start mysql in cmd ein und die Eing...
In diesem Artikelbeispiel wird der spezifische Co...
Vue-Router-Übergänge sind eine schnelle und einfa...
Diese Frage stammt aus einer Nachricht auf Nugget...
Historische Befehle anzeigen und bestimmte Befehl...