Casting a number to a string in TypeScript
"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;// orwindow.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()
, for example:
var page_number:number = 3;window.location.hash = page_number.toLocaleString();
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).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();
One can also use the following syntax in typescript. Note the backtick " ` "
window.location.hash = `${page_number}`