"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).window.location.hash = <any>page_number;
String(page_number)
) anstelle des Castings ist erforderlich, wenn SieString
Methoden wie ztoLowerCase()
.Einfach nutzen
toString
odertoLocaleString
ich würde sagen. So:Diese werfen einen Fehler , wenn
page_number
istnull
oderundefined
. Wenn Sie dies nicht möchten, können Sie das für Ihre Situation geeignete Update auswählen:quelle
Man kann auch die folgende Syntax in Typoskript verwenden. Beachten Sie den Backtick "` "
quelle
window.location.hash ist ein
string
, also mach das:quelle
"Die Konvertierung des Typs 'number' in den Typ 'string' kann ein Fehler sein, da sich keiner der beiden Typen ausreichend mit dem anderen überschneidet. Wenn dies beabsichtigt war, konvertieren Sie den Ausdruck zuerst in 'unknown'." -> Diese Fehlermeldung wird angezeigt, wenn Sie versuchen, die Nummer in eine Zeichenfolge einzugeben. Konvertieren Sie es also zuerst in unbekannt und dann in Zeichenfolge.
quelle
Verwenden Sie das Symbol "+", um eine Zeichenfolge in eine Zahl umzuwandeln.
quelle
+
Casts to Number