在TypeScript中将数字转换为字符串

时间:2015-09-13 21:15:49

标签: javascript casting typescript

哪些是在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

那么哪种方法更好?

7 个答案:

答案 0 :(得分:198)

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

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

如果您不希望在page_numbernullundefined时抛出错误,则这些转换非常理想。而page_number.toString()page_number.toLocaleString()将在page_numbernullundefined时投放。

当你只需要转换,而不是转换时,这就是如何在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)

我只想使用toStringtoLocaleString。所以:

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

如果page_numbernullundefined,则会产生错误。如果您不希望这样,您可以选择适合您情况的修复:

// 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)为字符串; //正确的方式