"Casting" unterscheidet sich von der Konvertierung. In diesem Fall window.location.hash
wird eine Zahl automatisch in eine Zeichenfolge konvertiert. Um einen TypeScript-Kompilierungsfehler zu vermeiden, können Sie die Zeichenfolgenkonvertierung selbst durchführen:
window.location.hash = ""+page_number;
window.location.hash = String(page_number);
Diese Umwandlungen sind ideal , wenn Sie nicht ein Fehler wollen geworfen werden , wenn page_number
ist null
oder undefined
. Während page_number.toString()
und page_number.toLocaleString()
wird werfen, wann page_number
ist null
oder undefined
.
Wenn Sie nur konvertieren und nicht konvertieren müssen, können Sie dies in TypeScript in eine Zeichenfolge umwandeln:
window.location.hash = <string>page_number;
// or
window.location.hash = page_number as string;
Die Annotationen <string>
oder as string
cast weisen den TypeScript-Compiler an, page_number
beim Kompilieren als Zeichenfolge zu behandeln . Es wird zur Laufzeit nicht konvertiert.
Der Compiler beschwert sich jedoch, dass Sie einer Zeichenfolge keine Nummer zuweisen können. Sie müssten zuerst besetzen <any>
, dann <string>
:
window.location.hash = <string><any>page_number;
// or
window.location.hash = page_number as any as string;
Es ist also einfacher, nur zu konvertieren, wodurch der Typ zur Laufzeit und zur Kompilierungszeit verarbeitet wird:
window.location.hash = String(page_number);
(Vielen Dank an @RuslanPolutsygan für das Problem mit dem Casting von Saitennummern.)
page_number
ist,null
wirdwindow.location.hash
* der String gesetzt"null"
. (Ich würde einen Fehler vorziehen: D).