patternjavascriptCritical
Casting a number to a string in TypeScript
Viewed 0 times
stringcastingtypescriptnumber
Problem
Which is the the best way (if there is one) to cast from number to string in Typescript?
In this case the compiler throws the error:
Type 'number' is not assignable to type 'string'
Because
So which method is better?
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() functionSo which method is better?
Solution
"Casting" is different than conversion. In this case,
These conversions are ideal if you don't want an error to be thrown when
When you only need to cast, not convert, this is how to cast to a string in TypeScript:
The `
So it's easier to just convert, which handles the type at run time and compile time:
(Thanks to @RuslanPolutsygan for catching the string-number casting issue.)
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 = page_number;
// or
window.location.hash = page_number as string;The `
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 , then to `:window.location.hash = 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.)
Code Snippets
window.location.hash = ""+page_number;
window.location.hash = String(page_number);window.location.hash = <string>page_number;
// or
window.location.hash = page_number as string;window.location.hash = <string><any>page_number;
// or
window.location.hash = page_number as any as string;window.location.hash = String(page_number);Context
Stack Overflow Q#32554624, score: 467
Revisions (0)
No revisions yet.