"Casting"(类型转换)与“conversion”(转化)是不同的。在这种情况下,window.location.hash
会自动将数字转换为字符串。但为了避免TypeScript编译错误,您可以自己进行字符串转换:
window.location.hash = ""+page_number
window.location.hash = String(page_number)
如果您不希望在page_number
为null
或undefined
时抛出错误,那么这些转换是理想的。而page_number.toString()
和page_number.toLocaleString()
会在page_number
为null
或undefined
时抛出错误。
当您仅需要执行类型转换而不是真正进行转换时,以下是在TypeScript中将其转换为字符串的方法:
window.location.hash = <string>page_number
// or
window.location.hash = page_number as string
<string>
或as string
类型转换注释告诉TypeScript编译器在编译时将page_number
视为字符串;它不会在运行时进行转换。
然而,编译器会抱怨您不能将数字赋值给字符串。您必须首先将其转换为<any>
,然后再转换为<string>
:
window.location.hash = <string><any>page_number
// or
window.location.hash = page_number as any as string
因此,更容易的方式是进行转换,它可以在运行时和编译时处理类型:
window.location.hash = String(page_number)
(感谢@RuslanPolutsygan指出了字符串-数字转换问题。)
page_number
为null
,这将会把window.location.hash
设置为字符串"null"
。(我希望出现一个错误:D) - Jeroenwindow.location.hash = <any>page_number;
。 - MouneerString
方法,例如toLowerCase()
时,使用转换(即String(page_number)
)而不是强制类型转换是必要的。 - EricRobertBrewer\
${page_number}``。 - Ollie