Rolf B: [] + "" bzw. [] in array.reduce

Beitrag lesen

Hallo Random2356,

TypeScript ist, wie der Name sagt, eine Sprache mit getypten Variablen, die zur Ausführung nach JavaScript compiliert wird. Die von Dir genannte Meldung kommt vom Compiler, nicht von der Runtime.

JavaScript-Variablen sind ungetypt und dementsprechend veranstaltet der JS Interpreter eine MENGE, um damit irgendwie klarzukommen.

Ich finde im Selfwiki keinen Artikel über die Javascript-Konvertierungsregeln - und im Netz finde ich vor allem Hinweise darauf, wie wild diese Konvertierung sein kann.

Grundsätzlich ist es so, dass JavaScript sich bei der Ausführung von mathematischen Operatoren eher ein Bein abbeißt als eine Fehlermeldung zu werfen, was überraschende Folgen haben kann. Versucht man, das in der JavaScript Spec nachzuvollziehen, begibt man sich auf einen abenteuerlichen Abstieg in die Tiefen der Grammatikproduktionen und primitiven Operationen - darauf gehe ich jetzt nicht ein. Unter anderem deshalb, weil ich bei diesem Abstieg an entscheidender Stelle die richtige Trittstufe nicht gefunden habe.

Jedenfalls wird bei [] + 5 aus dem leeren Array der Wert 0 und bei [] + "5" wird es der Leerstring. Edith sagt: Rolf, du Dummerchen

Jedenfalls macht der Plus-Operator aus [] einen Leerstring. Das ist ein Sonderfall für die allgemeine toString-Konvertierung. [1,2,3] + 5 wird bspw. zu dem String "1,2,35"

Rolf

--
sumpsi - posui - obstruxi