Javascript 在TypeScript中将数字转换为字符串

Javascript 在TypeScript中将数字转换为字符串,javascript,casting,typescript,Javascript,Casting,Typescript,在Typescript中,从数字转换为字符串的最佳方式(如果有的话)是什么 var page_number:number = 3; window.location.hash = page_number; 在这种情况下,编译器抛出错误: 类型“number”不可分配给类型“string” 因为location.hash是一个字符串 window.location.hash = ""+page_number; //casting using "" literal window.location.

在Typescript中,从数字转换为字符串的最佳方式(如果有的话)是什么

var page_number:number = 3;
window.location.hash = page_number; 
在这种情况下,编译器抛出错误:

类型“number”不可分配给类型“string”

因为
location.hash
是一个字符串

window.location.hash = ""+page_number; //casting using "" literal
window.location.hash = String(number); //casting creating using the String() function
那么,哪种方法更好呢?

我想说的是,就利用它吧。因此:

var page_number:number = 3;
window.location.hash = page_number.toLocaleString();

如果
页码
未定义
,则会引发错误。如果您不想这样做,可以选择适合您的情况的修复方法:

// Fix 1:
window.location.hash = (page_number || 1).toLocaleString();

// Fix 2a:
window.location.hash = !page_number ? "1" page_number.toLocaleString();

// Fix 2b (allows page_number to be zero):
window.location.hash = (page_number !== 0 && !page_number) ? "1" page_number.toLocaleString();
“铸造”不同于转化。在这种情况下,
window.location.hash将自动将数字转换为字符串。但为了避免TypeScript编译错误,您可以自己进行字符串转换:

window.location.hash = ""+page_number; 
window.location.hash = String(page_number); 
如果您不希望在
页码
null
未定义
时引发错误,则这些转换非常理想。而
page\u number.toString()
page\u number.toLocalString()
将在
page\u number
null
未定义时抛出

当您只需要强制转换而不需要转换时,以下是如何在TypeScript中强制转换为字符串:

window.location.hash = <string>page_number; 
// or 
window.location.hash = page_number as string;
因此,转换更容易,它在运行时和编译时处理类型:

window.location.hash = String(page_number); 
(感谢@RuslanPolutsygan抓住了字符串数字转换问题。)

使用“+”符号将字符串转换为数字

window.location.hash = +page_number;

window.location.hash是一个
字符串
,请执行以下操作:

var page_number: number = 3;
window.location.hash = String(page_number); 

也可以在typescript中使用以下语法。请注意背面的“`”

常数页码=3

window.location.hash=页码为字符串;//错误

“将类型“number”转换为类型“string”可能是错误的,因为两种类型都没有足够的重叠。如果有意这样做,请先将表达式转换为“unknown”。->如果尝试将number转换为string,则会出现此错误。所以,首先将其转换为未知,然后转换为字符串

window.location.hash=(页码未知)为字符串;//正道


这是一些捷径

any_type = "" + any_type; 
any_type = String(any_type); 
any_type = `${any_type}`;

小心,如果
page\u number
null
这将设置
window.location.hash
为*字符串
“null”
。(我更喜欢一个错误:d)。如果你不想让编译器抱怨,就说
window.location.hash=page\u numberString
方法时,如
toLowerCase()
,需要使用转换(即
String(page\u number)
)而不是强制转换。此外,您还可以使用模板String
`${page\u number}`
+
强制转换为数字强制转换为字符串的步骤不要对大数字使用ToLocalString,因为它像货币一样添加逗号。它将破坏标识符。这是一个javascript特性,而不是typescript特性。我认为只使用字符串(页码)更干净
window.location.hash = `${page_number}`
any_type = "" + any_type; 
any_type = String(any_type); 
any_type = `${any_type}`;