在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_number
为null
或undefined
时引发错误,则这些转换是理想的。 而page_number.toString()
和page_number.toLocaleString()
将在page_number
为null
或undefined
时抛出。
当你只需要转换,而不是转换时,这是如何在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数字投射问题。)
只是利用toString
或toLocaleString
我会说。 所以:
var page_number:number = 3; window.location.hash = page_number.toLocaleString();
如果page_number
为null
或undefined
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();