在TypeScript中将数字转换为string

在Typescript中,从数字到string的最好方法是什么(如果有的话)?

var page_number:number = 3; window.location.hash = page_number; 

在这种情况下,编译器会抛出错误:

types“数字”不能分配到types“string”

因为location.hash是一个string。

 window.location.hash = ""+page_number; //casting using "" literal window.location.hash = String(number); //casting creating using the String() function 

那么哪种方法更好?

“铸造”与转换不同。 在这种情况下, window.location.hash会自动将数字转换为string。 但是为了避免TypeScript编译错误,你可以自己进行string转换:

 window.location.hash = ""+page_number; window.location.hash = String(page_number); 

如果您不希望在page_numbernullundefined时引发错误,则这些转换是理想的。 而page_number.toString()page_number.toLocaleString()将在page_numbernullundefined时抛出。

当你只需要转换,而不是转换时,这是如何在TypeScript中转换为string:

 window.location.hash = <string>page_number; // or window.location.hash = page_number as string; 

<string>as string注释告诉TypeScript编译器在编译时将page_number视为一个string; 它不会在运行时转换。

但是,编译器会抱怨你不能给一个string赋一个数字。 你将不得不先转换成<any> ,然后转换成<string>

 window.location.hash = <string><any>page_number; // or window.location.hash = page_number as any as string; 

所以只需要在运行时和编译时处理types就可以轻松完成转换:

 window.location.hash = String(page_number); 

(感谢@RuslanPolutsygan捕捉string数字投射问题。)

只是利用toStringtoLocaleString我会说。 所以:

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

如果page_numbernullundefined page_number引发错误。 如果你不想要,你可以select适合你的情况的修补程序:

 // 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();