Convertir un número a una cadena en TypeScript

Resuelto Ma Jerez asked hace 9 años • 8 respuestas

¿Cuál es la mejor manera (si existe) de convertir un número a una cadena en Typecript?

var page_number:number = 3;
window.location.hash = page_number; 

En este caso el compilador arroja el error:

El tipo 'número' no se puede asignar al tipo 'cadena'

Porque location.hashes una cuerda.

window.location.hash = ""+page_number; //casting using "" literal
window.location.hash = String(number); //casting creating using the String() function

Entonces, ¿qué método es mejor?

Ma Jerez avatar Sep 14 '15 04:09 Ma Jerez
Aceptado

"Casting" es diferente a conversión. En este caso, window.location.hashconvertirá automáticamente un número en una cadena. Pero para evitar un error de compilación de TypeScript, puedes realizar la conversión de cadenas tú mismo:

window.location.hash = ""+page_number; 
window.location.hash = String(page_number); 

Estas conversiones son ideales si no desea que se produzca un error cuando page_numberes nullo undefined. Mientras que page_number.toString()y page_number.toLocaleString()lanzará cuando page_numbersea nullo undefined.

Cuando solo necesita convertir, no convertir, así es como se convierte a una cadena en TypeScript:

window.location.hash = <string>page_number; 
// or 
window.location.hash = page_number as string;

Las anotaciones <string>or as stringcast le indican al compilador de TypeScript que lo trate page_numbercomo una cadena en el momento de la compilación; no se convierte en tiempo de ejecución.

Sin embargo, el compilador se quejará de que no se puede asignar un número a una cadena. Primero tendrías que enviar a <any>, luego a <string>:

window.location.hash = <string><any>page_number;
// or
window.location.hash = page_number as any as string;

Por lo tanto, es más fácil simplemente convertir, que maneja el tipo en tiempo de ejecución y tiempo de compilación:

window.location.hash = String(page_number); 

(Gracias a @RuslanPolutsygan por detectar el problema de conversión de números de cadena).

Robert Penner avatar Sep 16 '2015 11:09 Robert Penner

Utilice toString()(o toLocaleString(), pero tenga cuidado de que pueda agregar cosas como caracteres separadores de 1000), por ejemplo:

var page_number:number = 3;
window.location.hash = page_number.toString();

Estos arrojan un error si page_numberes nullo undefined. Si no desea eso, puede elegir la solución adecuada a su situación:

// 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";
Jeroen avatar Sep 13 '2015 21:09 Jeroen

Estas son algunas formas breves.

any_type = "" + any_type; 
any_type = String(any_type); 
any_type = `${any_type}`;
Binh Ho avatar Mar 04 '2021 04:03 Binh Ho