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

问题描述 投票:0回答:8

在 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

那么哪种方法更好呢?

javascript casting typescript
8个回答
444
投票

“铸造”与转换不同。在这种情况下,

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 发现了字符串数字转换问题。)


41
投票

利用

toString()
(或
toLocaleString()
,但请注意它可能会添加诸如 1000 的分隔符之类的内容),例如:

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

如果

page_number
null
undefined
,则会抛出错误。如果您不想这样做,可以选择适合您情况的修复方法:

// Fix 1:
window.location.hash = (page_number || 1).toString();

// Fix 2a:
window.location.hash = !page_number ? "1" page_number.toString();

// Fix 2b (allows page_number to be zero):
window.location.hash = (page_number !== 0 && !page_number) ? "1" page_number.toString();

// Fix 3, modern js:
window.location.hash = page_number?.toString() || "1";

16
投票

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

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

11
投票

这是一些简短的方法

any_type = "" + any_type; 
any_type = String(any_type); 
any_type = `${any_type}`;

7
投票

window.location.hash 是一个

string
,所以这样做:

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

3
投票

只需使用:

page_number?.toString()


3
投票

最简单的方法:

var num = 3; var str =`${num}`;


0
投票

const page_number = 3;

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

“将“数字”类型转换为“字符串”类型可能是一个错误,因为两种类型都没有与另一种类型充分重叠。如果这是故意的,请首先将表达式转换为“未知”。” -> 如果您尝试将数字类型转换为字符串,您将收到此错误。因此,首先将其转换为未知,然后再转换为字符串。

window.location.hash = (page_number 未知) as string; // 正确的方法

© www.soinside.com 2019 - 2024. All rights reserved.