JavaScript estaba pensado para escribir breves fragmentos de código de unas pocas líneas que se iban a incrustar en páginas web. Nadie podía prever que JavaScript llegaría a ser tan popular como lo es ahora ni que se utilizaría para escribir aplicaciones con miles de líneas de código.
Por mucho que JavaScript haya crecido y se utilice ahora ampliamente en la creación de aplicaciones, no es un lenguaje perfecto. Sus humildes comienzos y su uso inicial previsto hacen que JavaScript tenga algunas peculiaridades que pueden convertir la creación de aplicaciones a gran escala en una pesadilla.
Por ejemplo, JavaScript no lanza un error cuando se hace referencia a elementos que no existen en un objeto o cuando se multiplica null por un valor numérico.
Para JavaScript, una cadena vacía(«») es igual a 0(cero) cuando se comparan los dos utilizando un operador de igualdad(==). Peor aún, JavaScript no le mostrará estos errores en su código en desarrollo. Sólo verá los errores una vez que ejecute su programa.
TypeScript, construido sobre JavaScript, se desarrolló por tanto para aliviar los retos que surgen al construir aplicaciones con JavaScript. Para lograrlo, TypeScript realiza una comprobación estática de tipos a medida que usted escribe su código.
La comprobación estática significa detectar errores en su código sin que tenga que ejecutarlo. La comprobación estática de tipos consiste, por tanto, en buscar errores durante el desarrollo basándose en el tipo de valores sobre los que se opera en el código.
TypeScript es un superconjunto tipado de JavaScript. Ser un superconjunto de JavaScript significa que cualquier código JavaScript válido también es TypeScript válido. Estar tipado significa que TypeScript añade reglas sobre cómo se pueden utilizar los diferentes tipos de datos. TypeScript también está fuertemente tipado, y no se puede trabajar alrededor de las restricciones impuestas por el sistema de tipos.
TypeScript es un gran hito y un avance significativo en el desarrollo web. TypeScript le permite escribir código más legible y fácil de mantener. También refuerza las buenas prácticas de codificación y ayuda a los desarrolladores a detectar y evitar errores al escribir código.
TypeScript es más fiable y fácil de refactorizar, lo que lo hace ideal para construir aplicaciones a gran escala en comparación con JavaScript. Dado que TypeScript está fuertemente tipado, veamos la conversión de tipos, su importancia y cómo TypeScript maneja las conversiones de tipos.
Conversión de tipos en TypeScript y su importancia
La conversión de tipos es el proceso de convertir un valor de un tipo de datos a otro, como convertir un valor de cadena a un número. La conversión de tipos puede hacerse implícitamente, donde el compilador convierte automáticamente los tipos de datos compatibles durante las complicaciones.
La conversión de tipos también puede ser explícita, cuando la conversión de tipos se requiere explícitamente en el código fuente. Esto se conoce a menudo como encasillamiento.
La conversión de tipos es importante porque permite a los desarrolladores trabajar con diferentes formatos de datos sin dejar de ajustarse a los tipos de datos esperados en TypeScript. También ayuda a garantizar resultados predecibles de los códigos fuente.
Como desarrollador, moldear los tipos usted mismo le ayuda a asegurarse de que su código sigue cumpliendo los requisitos de tipos de TypeScript. Hace que su código sea más legible y comprensible y ayuda a prevenir errores relacionados con los tipos.
Las conversiones de tipos también ayudan a soportar las validaciones de datos, y ayuda a TypeScript a ayudarle en el desarrollo proporcionándole todas las herramientas incorporadas, como el autocompletado, que están asociadas a tipos específicos.
Un caso de uso común para la conversión de tipos es con cadenas y números. Al convertir cadenas a números en TypeScript, para evitar errores en su código sólo convierte cadenas numéricas a números. Es decir, puede convertir cadenas como «1», «235», «5234.5», etc. Sin embargo, no convierta cadenas como «hola» en un número
Veamos las diferentes formas de convertir cadenas en números en TypeScript:
Aserción de tipo utilizando ‘as
Cuando trabaje con varios tipos de datos en su código TypeScript, a veces, tendrá más información sobre el tipo de un valor que TypeScript no puede conocer. En tales casos, usted le dice a TypeScript de qué tipo será una variable y no deja que el compilador infiera el tipo. Esto se llama aserción de tipo.
La aserción de tipo se realiza utilizando la palabra clave as. Para utilizar la aserción de tipo para convertir una cadena en un número, primero establezca el tipo de la cadena como desconocido. Esto se debe a que, por defecto, TypeScript considera que cualquier conversión de tipo cadena a un número es potencialmente un error. Esto se debe a que ni la cadena ni el número se superponen suficientemente entre sí. Para convertir una cadena en un número utilizando como proceda como se muestra a continuación:
/**
* establezca el tipo de numCadena como desconocido, de lo contrario,
* Typescript inferirá que numString es un valor de cadena
*/
let numCadena: desconocido = "23452";
// Conversión de tipo mediante as - numCadena se convierte en un número
// y se asigna a la variable puntuación
let puntuación = numCadena as número;
console.log(puntuación);
console.log(puntuación * 35);
Salida:
23452
820820
En la salida, observe que la variable numCadena
se convirtió en un número y se asignó a puntuación. Entonces podemos hacer cálculos numéricos como la multiplicación con score porque su valor es un número
Aserción de tipo utilizando <>
La aserción de tipo utilizando <> también se puede utilizar para convertir una cadena en un número. Funciona exactamente igual que el uso de la palabra clave as. La única diferencia en la implementación es la sintaxis, que se muestra a continuación:
let numCadena: desconocido = "23452";
// Aserción tipográfica utilizando <> para convertir una cadena en un número
let puntuación = <número>numCadena;
console.log(puntuación);
console.log(puntuación * 35);
Salida:
23452
820820
La salida es la misma que utilizando la palabra clave as. De nuevo, recuerde no utilizar la aserción de tipo para convertir cadenas que no contengan valores numéricos.
Uso del constructor de números
Para convertir una cadena en un número utilizando el constructor Número pase la cadena que desea convertir al constructor Número como se muestra en el fragmento de código siguiente:
let numCadena = "23452"; // tipo inferido a cadena
let vidas: cadena = "20"; // tipo anotado a cadena
// pase la cadena al constructor Number para convertirla en número
let puntuación = Número(numCadena)
console.log(puntuación / 17)
// pasar cadena al constructor de Número para convertir a número
let vidas restantes = Número(vidas);
console.log(vidas restantes - 4)
Salida:
1379.5294117647059
16
Cuando utilice el constructor Número, no tiene que establecer el tipo de la cadena como desconocido. Funciona con valores de cadena que hayan sido anotados o inferidos a cadena. Sin embargo, recuerde pasar cadenas numéricas como «514». Si pasa una cadena que no puede convertirse en un número, se devolverá NaN (Not-a-Number).
Uso del operador unario más ( )
El operador unario más ( ), que precede a su único operando, se evalúa al operando al que precede. Por ejemplo, 2 se evalúa al número 2, 542 se evalúa al número 542, y así sucesivamente. Sin embargo, si el operando no es un número, el operador unario más ( ) intenta convertirlo en un número.
Por ejemplo, «98», se evaluará a98, y «0» se evaluará al número 0. Por lo tanto, podemos utilizar el operador unario más ( ) para convertir cadenas en números. Si se pasa una cadena que no se puede convertir en un número, se devuelve NaN como se muestra a continuación:
let numCadena1 = "23452";
let numCadena2 = "973.82"
let palabra = "hola"
// Utilizando el más unario ( ) para convertir cadenas en números
let num1 = numCadena1
let num2 = numCadena2;
let noNúmero = palabra;
console.log(`${num1} es un ${tipo de num1}`);
console.log(`${num2} es un ${tipode num2}`);
console.log(noNúmero);
Salida:
23452 es un número
973.82 es un número
NaN
Utilizar el operador unario más ( ) es una buena forma de convertir cadenas en números, ya que es rápido y no realiza ninguna operación adicional sobre sus operandos.
Uso de parseInt() y parseFloat()
Al igual que en JavaScript, Typescript no distingue entre números enteros y números decimales también conocidos como números de coma flotante. Todos se consideran de tipo número. Dicho esto, los comportamientos de parseInt() y parseFloat() difieren ligeramente.
parseInt() toma un argumento de cadena, lo analiza y devuelve un número entero equivalente según el radix especificado. parseFloat() toma una cadena y la analiza devolviendo un número de coma flotante.
Por ejemplo, si pasa «897» tanto a parseInt() como a parseFloat(), obtendrá de vuelta el número 897. Sin embargo, si pasa 897,75 tanto a parseInt() como a parseFloat(), parseInt() devolverá 897 mientras que parsefloat() devolverá 897,75.
Por lo tanto, cuando convierta cadenas numéricas que no tengan decimales, utilice parseInt(), sin embargo, si la cadena numérica tiene decimales, utilice parseFloat() como se muestra en el código siguiente:
let numCadena1 = "897,75
let numCadena2 = "724";
let palabra = "hola";
console.log("Analizando cadenas numéricas con números decimales")
console.log(`Usando parseInt -> ${parseInt(numCadena1)}`);
console.log(`Usando parseFloat -> ${parseFloat(numCadena1)}`);
console.log("Parseando cadenas numéricas con números enteros")
console.log(`Usando parseInt -> ${parseInt(numCadena2)}`);
console.log(`Usando parseFloat -> ${parseFloat(numCadena2)}`);
console.log("Parseando cadenas que no se pueden convertir a número")
console.log(parseInt(palabra));
console.log(parseFloat(palabra));
Salida:
Análisis sintáctico de cadenas numéricas con números decimales
Usando parseInt -> 897
Usando parseFloat -> 897.75
Análisis sintáctico de cadenas numéricas con números enteros
Utilizando parseInt -> 724
Utilizando parseFloat -> 724
Análisis sintáctico de cadenas que no pueden convertirse en número
NaN
NaN
Conclusión
Cuando trabaje con valores de cadena, como el resultado de las llamadas a la API, es posible que desee convertirlos en números para poder realizar cálculos numéricos con ellos. Cuando surja tal necesidad, considere los métodos destacados en el artículo para convertir cadenas en números.
Sin embargo, siempre que convierta cadenas en números, tenga cuidado porque podría obtener NaN cuando intente convertir una cadena en un número.
Para evitar dicho error, asegúrese de que todas las cadenas que desea convertir a un número son cadenas numéricas. También puede utilizar una sentencia if para comprobar la existencia de NaN y evitar errores en su código.
También puede explorar las principales bibliotecas y tiempos de ejecución de TypeScript que debe conocer como desarrollador.