admin管理员组文章数量:1129220
Which is the the best way (if there is one) to cast from number to string in Typescript?
var page_number:number = 3;
window.location.hash = page_number;
In this case the compiler throws the error:
Type 'number' is not assignable to type 'string'
Because location.hash
is a string.
window.location.hash = ""+page_number; //casting using "" literal
window.location.hash = String(number); //casting creating using the String() function
So which method is better?
Which is the the best way (if there is one) to cast from number to string in Typescript?
var page_number:number = 3;
window.location.hash = page_number;
In this case the compiler throws the error:
Type 'number' is not assignable to type 'string'
Because location.hash
is a string.
window.location.hash = ""+page_number; //casting using "" literal
window.location.hash = String(number); //casting creating using the String() function
So which method is better?
Share Improve this question edited Sep 13, 2015 at 21:46 Jeroen 63.5k46 gold badges227 silver badges365 bronze badges asked Sep 13, 2015 at 21:15 Ma JerezMa Jerez 5,9754 gold badges25 silver badges22 bronze badges8 Answers
Reset to default 460"Casting" is different than conversion. In this case, window.location.hash
will auto-convert a number to a string. But to avoid a TypeScript compile error, you can do the string conversion yourself:
window.location.hash = ""+page_number;
window.location.hash = String(page_number);
These conversions are ideal if you don't want an error to be thrown when page_number
is null
or undefined
. Whereas page_number.toString()
and page_number.toLocaleString()
will throw when page_number
is null
or undefined
.
When you only need to cast, not convert, this is how to cast to a string in TypeScript:
window.location.hash = <string>page_number;
// or
window.location.hash = page_number as string;
The <string>
or as string
cast annotations tell the TypeScript compiler to treat page_number
as a string at compile time; it doesn't convert at run time.
However, the compiler will complain that you can't assign a number to a string. You would have to first cast to <any>
, then to <string>
:
window.location.hash = <string><any>page_number;
// or
window.location.hash = page_number as any as string;
So it's easier to just convert, which handles the type at run time and compile time:
window.location.hash = String(page_number);
(Thanks to @RuslanPolutsygan for catching the string-number casting issue.)
Utilize toString()
(or toLocaleString()
, but take care that it might add things like 1000's separator characters), for example:
var page_number:number = 3;
window.location.hash = page_number.toString();
These throw an error if page_number
is null
or undefined
. If you don't want that you can choose the fix appropriate for your situation:
// 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";
One can also use the following syntax in typescript. Note the backtick " ` "
window.location.hash = `${page_number}`
This is some short ways
any_type = "" + any_type;
any_type = String(any_type);
any_type = `${any_type}`;
window.location.hash is a string
, so do this:
var page_number: number = 3;
window.location.hash = String(page_number);
Just use: page_number?.toString()
Easiest way:
var num = 3; var str =`${num}`;
const page_number = 3;
window.location.hash = page_number as string; // Error
"Conversion of type 'number' to type 'string' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first." -> You will get this error if you try to typecast number to string. So, first convert it to unknown and then to string.
window.location.hash = (page_number as unknown) as string; // Correct way
本文标签: javascriptCasting a number to a string in TypeScriptStack Overflow
版权声明:本文标题:javascript - Casting a number to a string in TypeScript - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.betaflare.com/web/1736728274a1949851.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论