在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
那么哪种方法更好呢?
发布于 2015-09-16 19:43:15
“强制转换”不同于转换。在这种情况下,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捕获了字符串编号转换问题。)
发布于 2015-09-14 05:32:22
利用toString()
或toLocaleString()
,例如:
var page_number:number = 3;
window.location.hash = page_number.toLocaleString();
如果page_number
为null
或undefined
,则会抛出错误。如果您不想这样做,您可以选择适合您的情况的修复程序:
// 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();
发布于 2018-09-23 04:57:33
在typescript中也可以使用以下语法。注意反引号“`”
window.location.hash = `${page_number}`
https://stackoverflow.com/questions/32554624
复制相似问题