HiveBrain v1.2.0
Get Started
← Back to all entries
patternjavascriptCritical

Casting a number to a string in TypeScript

Submitted by: @import:stackoverflow-api··
0
Viewed 0 times
stringcastingtypescriptnumber

Problem

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?

Solution

"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 = 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.