Convertir un número a una cadena en TypeScript
¿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.hash
es 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?
"Casting" es diferente a conversión. En este caso, window.location.hash
convertirá 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_number
es null
o undefined
. Mientras que page_number.toString()
y page_number.toLocaleString()
lanzará cuando page_number
sea null
o 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 string
cast le indican al compilador de TypeScript que lo trate page_number
como 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).
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_number
es null
o 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";
Estas son algunas formas breves.
any_type = "" + any_type;
any_type = String(any_type);
any_type = `${any_type}`;