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

Casting a number to a string in TypeScript

本文关键字:转换 字符串 数字 TypeScript      更新时间:2023-09-26

在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

那么哪种方法更好呢?

" cast "不同于" conversion "。在这种情况下,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捕获字符串编号转换问题)

利用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();

还可以在typescript中使用以下语法。

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

这是一些简短的方法

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

window.location。哈希值是string,所以这样做:

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

直接使用:page_number?.toString()

最简单的方法:

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

const page_number = 3;

window.location。哈希= page_number作为字符串;//错误

"类型'number'转换为类型'string'可能是错误的,因为两种类型都没有充分重叠。如果这是故意的,请先将表达式转换为"unknown"。→如果尝试将number类型转换为string,将得到此错误。因此,首先将其转换为unknown,然后再转换为string。

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