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

13 浏览
0 Comments

在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那么哪种方法更好呢?

0
0 Comments

在TypeScript中将数字转换为字符串的问题,并提供了解决方法。问题的原因是在 TypeScript 中使用反引号 "`" 的语法,如下所示:

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

这实际上是 JavaScript 的一种特性,而不是 TypeScript 的特性。为了解决这个问题,可以使用更简洁的方法,即使用 String(page_number) 将数字转换为字符串。需要注意的是,TypeScript 已经重载了这种语法,以支持模板类型。

0
0 Comments

在TypeScript中将一个数字转换为字符串的问题是因为在使用toString()toLocaleString()这两个方法时,如果数字为nullundefined时会抛出错误。为了解决这个问题,可以选择适合自己情况的修复方法。

修复方法如下:

- 修复方法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()方法,因为它会像货币一样添加逗号,这会破坏标识符。

0
0 Comments

在TypeScript中,将数字转换为字符串的问题是由于类型转换和类型转换不同而引起的。在这种情况下,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时会抛出错误。

当你只需要进行类型转换而不是转换时,可以使用以下方法将其转换为字符串:

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_numbernull,这将将window.location.hash设置为字符串"null"。(我更喜欢出现错误:D)。

如果你不想让编译器抱怨,只需写window.location.hash = <any>page_number;

当你想要使用任何String方法时,使用转换(即String(page_number))而不是转换是必要的,例如toLowerCase()

另外,你还可以使用模板字符串`${page_number}`

0