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?
This question is related to
javascript
casting
typescript
Use the "+" symbol to cast a string to a number.
window.location.hash = +page_number;
window.location.hash is a string
, so do this:
var page_number: number = 3;
window.location.hash = String(page_number);
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
One can also use the following syntax in typescript. Note the backtick " ` "
window.location.hash = `${page_number}`
Just utilize toString
or toLocaleString
I'd say. So:
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();
Source: Stackoverflow.com