Wir verwenden zwei Objekte, um die Gehälter von zwei Programmierern zu beschreiben: const Gehalt1 = { Basisgehalt: 100_000, Jahresbonus: 20_000 }; const Gehalt2 = { VertragGehalt: 110_000 }; Schreiben Sie dann eine Funktion, um das Gesamtgehalt zu erhalten Funktion Gesamtgehalt(Gehaltsobjekt: ???) { sei total = 0; für (const name in salaryObject) { Gesamtsumme += Gehaltsobjekt[Name]; } Gesamtrendite; } Gesamtgehalt(Gehalt1); // => 120_000 Gesamtgehalt (Gehalt2); // => 110_000 Wie würden Sie an Ihrer Stelle den Parameter Die Antwort ist, eine Indexsignatur zu verwenden! Sehen wir uns als Nächstes an, was 1. Was ist eine Indexsignatur?Die Idee von Indexsignaturen besteht darin, Objekte zu typisieren, deren Struktur unbekannt ist, wenn nur der Schlüssel und die Wertetypen bekannt sind. Im Fall Wir deklarieren Funktion Gesamtgehalt (Gehaltsobjekt: { [Schlüssel: Zeichenfolge]: Zahl }) { sei total = 0; für (const name in salaryObject) { Gesamtsumme += Gehaltsobjekt[Name]; } Gesamtrendite; } Gesamtgehalt(Gehalt1); // => 120_000 Gesamtgehalt (Gehalt2); // => 110_000
2. Indexsignatursyntax Die Syntax für Indexsignaturen ist ziemlich einfach und ähnelt der Syntax für Eigenschaften, es gibt jedoch einen Unterschied. Wir schreiben einfach den Schlüsseltyp in eckige Klammern anstelle des Eigenschaftsnamens: { [ Nachfolgend finden Sie einige Beispiele für Indexsignaturen. Schnittstelle StringByString { [Schlüssel: Zeichenfolge]: Zeichenfolge; } const heroesInBooks: StringByString = { 'Gunslinger': 'Weisheit aus der Front', „Jack Torrance“: „Wang Dazhi“ }; Der Schnittstellenoptionen { [Schlüssel: Zeichenfolge]: Zeichenfolge | Zahl | Boolesch; Zeitüberschreitung: Zahl; } const options: Optionen = { Zeitüberschreitung: 1000, timeoutMessage: 'Die Anforderung ist abgelaufen!', isFileUpload: false }; Der Signaturschlüssel kann nur eine 3. Hinweise zu Indexsignaturen Es gibt einige Einschränkungen bei Indexsignaturen in 3.1 Nicht vorhandene Eigenschaften Was passiert, wenn Sie versuchen, auf eine nicht vorhandene Eigenschaft eines Objekts mit der Indexsignatur { Wie erwartet folgert Laut Eine Indexsignatur ordnet lediglich einen Schlüsseltyp einem Werttyp zu, mehr nicht. Wenn diese Zuordnung nicht korrekt erfolgt, kann der Werttyp vom tatsächlichen Laufzeitdatentyp abweichen. Um die Eingabe genauer zu machen, wird der Indexwert als 3.2 Zeichenfolgen- und ZifferntastenAngenommen, es gibt ein Wörterbuch mit Zahlennamen: Schnittstelle NumbersNames { [Schlüssel: Zeichenfolge]: Zeichenfolge } Konstantennamen: NumbersNames = { '1': 'eins', '2': 'zwei', '3': 'drei', // ... }; Nein, es funktioniert normal. Sie können sich 4. Indexsignatur vs. Record<Keys, Type> const Objekt1: Datensatz<Zeichenfolge, Zeichenfolge> = { prop: 'Wert' }; // OK const object2: { [Schlüssel: Zeichenfolge]: Zeichenfolge } = { prop: 'Wert' }; // OK Die Frage ist also: Wann verwenden Sie Wie wir wissen, akzeptieren Indexsignaturen nur Indexsignaturen sind in Bezug auf die Schlüssel generisch. Wir können jedoch eine Vereinigung von Zeichenfolgenliteralen verwenden, um die Schlüssel in Typ Gehalt = Datensatz<'Jahresgehalt'|'Jahresbonus', Zahl> const Gehalt1: Gehalt = { 'Jahresgehalt': 120_000, 'Jahresbonus': 10_000 }; // OK
Es wird empfohlen, generische Objekte mit Indexsignaturen zu kommentieren, beispielsweise ist der Schlüssel vom Typ Zeichenfolge. Wenn Sie die Schlüssel jedoch im Voraus kennen, verwenden Sie Zusammenfassen: Wenn Sie die Objektstruktur, mit der Sie arbeiten, nicht kennen, aber die möglichen Schlüssel- und Wertetypen kennen, benötigen Sie Indexsignaturen. Eine Indexsignatur besteht aus dem Indexnamen und seinem Typ in eckigen Klammern, gefolgt von einem Doppelpunkt und dem Werttyp: Damit ist dieser Artikel zum Verständnis von TypeScript-Indexsignaturen abgeschlossen. Weitere verwandte Inhalte zu TypeScript-Indexsignaturen 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 Docker den Hostcomputer unter Mac nicht anpingen kann
Wenn wir in CentOS7 MySQL installieren, wird Mari...
Einführung: Im Internet gibt es zahlreiche Inform...
Ich werde die Installation von MySQL unter Window...
Bei den vielen Projekten, an denen ich mitgearbei...
1. Was ist Als Auszeichnungssprache hat CSS eine ...
Phänomen: Wandeln Sie das Div in einen Kreis, ein...
Docker-Funktionen 1) Schneller Einstieg Benutzer ...
1 Holen Sie sich das Installationsressourcenpaket...
1. Docker installieren yum installiere Docker #St...
In diesem Artikel erfahren Sie, wie Sie Nginx so ...
Vier Netzwerktypen: Keine: Konfigurieren Sie kein...
Beim Konfigurieren des Tomcat-Servers ist mir heu...
Beim Schreiben einer Seite kommt es häufig vor, d...
Inhaltsverzeichnis Vorne geschrieben Vorsichtsmaß...
//Grammatik: @media Medientyp und | nicht | nur (...