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
Die Methoden zur Installation von Nginx und mehre...
Implementieren Sie das Vergrößern und Verkleinern...
1》Seien Sie gut im Webdesign 2》Wissen, wie man Web...
1: Verstehen Sie die Bedeutung von Adressumschrei...
Verwenden Sie runlike, um die Docker Run-Startpar...
Inhaltsverzeichnis 1. innodb_buffer_pool_size 2. ...
vue-router hat zwei Modi Hash-Modus Verlaufsmodus...
Hintergrund Apropos MySQL-Deadlock: Ich habe bere...
Ich glaube, dass vielen Leuten, die MySQL schon l...
Inhaltsverzeichnis 1. Signalliste 1.1. Echtzeitsi...
Eine kurze Beschreibung der Umgebungsvariablenkon...
Im entpackten Paket von Windows 64-Bit MySQL 5.7 ...
1. Was ist Eventdelegation? Ereignisdelegierung: ...
In diesem Artikel wird der spezifische Code von V...
1. MySQL-Image herunterladen Befehl: docker pull ...