在TypeScript中将数字转换为字符串
在TypeScript中将数字转换为字符串
在Typescript中,将数字转换为字符串的最佳方式(如果有的话)是哪种?\n
var page_number:number = 3; window.location.hash = page_number;
\n在这种情况下,编译器会报错:\n
\n类型“number”不能赋值给类型“string”\n
\n因为location.hash
是一个字符串。\n
window.location.hash = ""+page_number; //使用""字面量进行转换 window.location.hash = String(number); //使用String()函数进行转换
\n那么哪种方法更好呢?
在TypeScript中将一个数字转换为字符串的问题是因为在使用toString()
或toLocaleString()
这两个方法时,如果数字为null
或undefined
时会抛出错误。为了解决这个问题,可以选择适合自己情况的修复方法。
修复方法如下:
- 修复方法1:
window.location.hash = (page_number || 1).toLocaleString();
- 修复方法2a:
window.location.hash = !page_number ? "1" page_number.toLocaleString();
- 修复方法2b(允许page_number
为零):
window.location.hash = (page_number !== 0 && !page_number) ? "1" page_number.toLocaleString();
需要注意的是,不要在处理大数字时使用toLocaleString()
方法,因为它会像货币一样添加逗号,这会破坏标识符。
在TypeScript中,将数字转换为字符串的问题是由于类型转换和类型转换不同而引起的。在这种情况下,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
时会抛出错误。
当你只需要进行类型转换而不是转换时,可以使用以下方法将其转换为字符串:
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);
(感谢 提示关于字符串-数字转换问题。)
注意,如果page_number
为null
,这将将window.location.hash
设置为字符串"null"
。(我更喜欢出现错误:D)。
如果你不想让编译器抱怨,只需写window.location.hash = <any>page_number;
当你想要使用任何String
方法时,使用转换(即String(page_number)
)而不是转换是必要的,例如toLowerCase()
。
另外,你还可以使用模板字符串`${page_number}`
。