哪些是在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
那么哪种方法更好?
答案 0 :(得分:198)
“施法”与转换不同。在这种情况下,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捕获字符串数字转换问题。)
答案 1 :(得分:24)
我只想使用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();
答案 2 :(得分:3)
这是一些简短的方法
any_type = "" + any_type;
any_type = String(any_type);
any_type = `${any_type}`;
答案 3 :(得分:2)
使用“+”符号将字符串转换为数字。
window.location.hash = +page_number;
答案 4 :(得分:2)
window.location.hash是string
,因此,请执行以下操作:
var page_number: number = 3;
window.location.hash = page_number.toString();
答案 5 :(得分:2)
一个人也可以在打字稿中使用以下语法。注意反引号“`”
window.location.hash = `${page_number}`
答案 6 :(得分:0)
const page_number = 3;
window.location.hash =页面编号作为字符串; //错误
“将类型'number'转换为'string'可能是一个错误,因为这两个类型都没有足够的重叠。如果这是有意的,请先将表达式转换为'unknown'。” ->如果您尝试将数字转换为字符串,则会收到此错误。因此,首先将其转换为unknown,然后转换为string。
window.location.hash =(未知的page_number)为字符串; //正确的方式