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

rn0zuynd  于 2023-01-02  发布在  TypeScript
关注(0)|答案(8)|浏览(394)

在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

那么哪种方法更好呢?

tvokkenx

tvokkenx1#

“强制转换”与转换不同。在本例中,window.location.hash会自动将数字转换为字符串。但为了避免TypeScript编译错误,您可以自己进行字符串转换:

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

如果您不希望在page_numbernullundefined时抛出错误,则这些转换是理想的,而当page_numbernullundefined时,将抛出page_number.toString()page_number.toLocaleString()
当您只需要强制转换而不需要转换时,以下是如何在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捕捉到字符串数字转换问题。)

vnzz0bqm

vnzz0bqm2#

使用toString()toLocaleString(),例如:

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();
4dbbbstv

4dbbbstv3#

也可以在打印脚本中使用以下语法。注意反勾号“'“

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

ctehm74n4#

这是一些捷径

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

vzgqcmou5#

哈希是一个string,因此执行以下操作:

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

ryevplcw6#

只需用途:page_number?.toString()

ftf50wuq

ftf50wuq7#

常数页码= 3;
窗口.位置.散列=页码,作为字符串; //错误
"将类型'number'转换为类型'string'可能是错误的,因为这两种类型都没有与另一种类型充分重叠。如果有意这样做,请先将表达式转换为'unknown'。"-〉如果试图将number转换为string,则会出现此错误。因此,请先将其转换为unknown,然后再转换为string。
window. location. hash =(页码为未知)为字符串; //正确的方式

pkmbmrz7

pkmbmrz78#

最简单的方法:
第一个月

相关问题