"Casting" unterscheidet sich von der Konvertierung. In diesem Fall window.location.hashwird 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_numberist nulloder undefined. Während page_number.toString()und page_number.toLocaleString()wird werfen, wann page_numberist nulloder 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 stringcast weisen den TypeScript-Compiler an, page_numberbeim 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_numberist,nullwirdwindow.location.hash* der String gesetzt"null". (Ich würde einen Fehler vorziehen: D).