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


175

在Typescript中将数字转换为字符串的最佳方法(如果有的话)是什么?

var page_number:number = 3;
window.location.hash = page_number; 

在这种情况下,编译器将引发错误:

“数字”类型不能分配给“字符串”类型

因为location.hash是一个字符串。

window.location.hash = ""+page_number; //casting using "" literal
window.location.hash = String(number); //casting creating using the String() function

那么哪种方法更好呢?

Answers:


294

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

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

如果您不希望在page_numberis null或时引发错误,那么这些转换是理想的选择undefined。而page_number.toString()page_number.toLocaleString()将在page_numberis null或时抛出undefined

当您只需要强制转换而不是转换时,这就是在TypeScript中强制转换为字符串的方法:

window.location.hash = <string>page_number; 
// or 
window.location.hash = page_number as string;

<string>as string投注解告诉打字稿编译器把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
小心,如果page_numbernull这将设置window.location.hash为*字符串"null"。(我更喜欢一个错误:D)。
Jeroen'2

如果您不想让编译器抱怨,请说window.location.hash = <any>page_number;
Mouneer '16

1
当您想使用任何方法(例如)时,必须使用转换(即String(page_number))而不是强制转换StringtoLowerCase()
埃里克·罗伯特·布鲁尔(EricRobertBrewer)'16

31

只是利用toStringtoLocaleString我会说。所以:

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

如果page_numberis 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();

不要将toLocaleString用于大数字,因为它会像添加货币一样添加逗号。它将破坏标识符。
Obaid

7

您还可以在打字稿中使用以下语法。注意反引号“`”

window.location.hash = `${page_number}`

5

window.location.hash是一个string,因此请执行以下操作:

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

0

const page_number = 3;

window.location.hash = page_number作为字符串; //错误

“将类型'number'转换为'string'可能是一个错误,因为这两个类型都不足以相互重叠。如果是有意的,请先将表达式转换为'unknown'。” ->如果您尝试将数字转换为字符串,则会收到此错误。因此,首先将其转换为unknown,然后转换为string。

window.location.hash =(page_number未知)作为字符串; //正确的方法


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.