Warum TypeScript die Konvertierung von String in Zahl ohne Warnung erlaubt

8

Beim Schreiben dieses TypeScript-Codes war ich überrascht, dass der TypeScript-Compiler mich nicht warnt, wenn ich von einer Zeichenfolge in eine Zahl umwandle.

%Vor%     
Ido Ran 18.10.2012, 18:00
quelle

1 Antwort

18

Kurze Antwort: a[i] hat den Typ any , nicht string .

Lange Antwort: a hat den Typ string[] . In TypeScript führen Objekte vom Typ T[] , die von einem number indiziert werden, zu einem Wert vom Typ T , aber die Indexierung durch string führt zu any . Werte vom Typ any können frei in einen anderen Typ konvertiert werden.

Warum?

Wenn Sie ein Array mit einer Zeichenfolge indexieren, kann der Compiler einfach nicht vorhersagen, was passieren wird, und Sie bleiben bei any hängen. Überlegen Sie:

%Vor%

Wenn Sie wirklich sicher sind, dass niemand mit Ihrem Objekt beschäftigt ist, oder wenn Sie Indizes aus einer bekanntermaßen sicheren Menge von Zeichenfolgenwerten verwenden, können Sie eine Indexierungsart schreiben. In dem Fall, in dem Sie mit einer Zeichenfolge indexieren, verwenden Sie wahrscheinlich lieber ein Objekt als ein Array:

%Vor%     
Ryan Cavanaugh 18.10.2012, 18:21
quelle

Tags und Links