T5.4 Tipos de datos
Tipos de datos¶
ℹ️ Fuente original: repo de Brayan Diaz C
En JavaScript, existen varios tipos de datos que se pueden utilizar para almacenar información en variables.
stringnumberbooleanundefinednullsymbolbigintarrayobject
Tipo de dato string¶
El tipo de datos string o cadena de caracteres se utiliza para representar texto.
let nombre = "Juan";
let apellido = "Pérez";
let nombreCompleto = nombre + " " + apellido;
También se pueden utilizar caracteres especiales en las cadenas de texto, como saltos de línea y tabulaciones, utilizando secuencias de escape.
let mensaje = "Este es un mensaje\nen dos líneas.";
let titulo = "Página principal\t\tMi sitio web";
Tipo de dato number¶
El tipo de datos number o numérico se utiliza para representar números enteros y decimales.
let numeroEntero = 42;
let numeroDecimal = 3.14;
Tipo de dato boolean¶
El tipo de datos boolean o booleano se utiliza para representar valores lógicos, es decir, verdadero o falso.
let esMayorDeEdad = true;
let tieneLicencia = false;
Tipo de dato undefined¶
El tipo de datos undefined se utiliza para representar un valor no definido.
let valorNoDefinido;
Tipo de dato null¶
El tipo de datos null se utiliza para representar un valor nulo o vacío.
let valorNulo = null;
Tipo de dato symbol¶
El tipo de datos symbol se utiliza para representar un valor único e inmutable.
let simbolo = Symbol("mi-simbolo");
Algunas características especiales de los símbolos:
// Creación de símbolos únicos:
let sym2 = Symbol("foo");
let sym3 = Symbol("foo");
if (sym2 === sym3) {
console.log("Iguales");
} else {
console.log("Diferentes");
}
// Recuperación de símbolos que ya existen
// (funcionamiento análogo al pool de Strings en Java):
sym2 = Symbol.for("foo"); // -> Symbol("foo")
sym3 = Symbol.for("foo");
if (sym2 === sym3) {
console.log("Iguales");
} else {
console.log("Diferentes");
}
Tipo de dato bigint¶
El tipo de datos bigint se utiliza para representar números enteros de gran tamaño.
let numeroEnteroGrande = 9007199254740991n;
Se crean con la “n” del final.
Tipo de dato Array¶
El tipo de datos Array o arreglo se utiliza para representar una colección de datos ordenados.
let frutas = ["manzana", "naranja", "plátano"];
let numeros = [1, 2, 3, 4, 5];
let cajonDeSantre = ["manzana", 2, null, true, 17n];
Podemos almacenar cualquier tipo de datos sin excepción.
Tipo de dato object¶
El tipo de datos object o objeto se utiliza para representar una colección de datos.
let persona = {
nombre: "Juan",
apellido: "Pérez",
edad: 30,
programas: true,
numeroIdentificacion: 123456789,
bandasFavoritas: ["The Beatles", "Led Zeppelin", "Queen"],
};
Más adelante le dedicaremos un apartado completo.
Buenas prácticas¶
Para saber cual es el tipo de dato de una variable, podemos utilizar el operador typeof.
let nombre = "Juan";
console.log(typeof nombre); // string
let edad = 30;
console.log(typeof edad); // number
let programas = true;
console.log(typeof programas); // boolean
let valorNoDefinido;
console.log(typeof valorNoDefinido); // undefined
let valorNulo = null;
console.log(typeof valorNulo); // object
let simbolo = Symbol("mi-simbolo");
console.log(typeof simbolo); // symbol
let numeroEnteroGrande = 9007199254740991n;
console.log(typeof numeroEnteroGrande); // bigint
let frutas = ["manzana", "naranja", "plátano"];
console.log(typeof frutas); // object => los arrays son objetos especiales
let persona = {
nombre: "Juan",
apellido: "Pérez",
edad: 30,
programas: true,
numeroIdentificacion: 123456789,
bandasFavoritas: ["The Beatles", "Led Zeppelin", "Queen"],
};
console.log(typeof persona); // object
cast entre tipos¶
La coerción o “casteo” de datos en JavaScript se refiere a la conversión automática que realiza el lenguaje de un tipo de dato a otro. A continuación, se presentan algunos ejemplos de coerción de datos en JavaScript.
Coerción implícita¶
La coerción implícita es cuando JavaScript convierte un tipo de dato automáticamente en otro. Por ejemplo, cuando se suman un número y una cadena de texto, JavaScript convierte automáticamente la cadena de texto en un número antes de realizar la suma.
let edad = 30;
let mensaje = "Tengo " + edad + " años."; // Coerción implícita de edad a cadena de texto
console.log(mensaje); // salida: "Tengo 30 años."
Dado que no conocemos las reglas del lenguaje, evitar su uso.
Coerción explícita¶
La coerción explícita es cuando se realiza una conversión de un tipo de dato a otro de forma explícita utilizando funciones o métodos específicos. Por ejemplo, se puede convertir una cadena de texto a un número utilizando la función Number().
let numeroComoCadena = "42";
let numeroComoNumero = Number(numeroComoCadena); // Coerción explícita de cadena de texto a número
console.log(typeof numeroComoCadena); // salida: "string"
console.log(typeof numeroComoNumero); // salida: "number"
Coerción a string¶
En JavaScript, cualquier tipo de dato puede ser convertido a una cadena de texto utilizando el método toString(). Este método devuelve una cadena de texto que representa el valor original.
let numero = 42;
let cadenaDeTexto = numero.toString(); // Conversión a cadena de texto
console.log(typeof numero); // salida: "number"
console.log(typeof cadenaDeTexto); // salida: "string"
Coerción a number¶
En JavaScript, cualquier tipo de dato puede ser convertido a un número utilizando las funciones Number() y parseInt(). La función Number() devuelve un número de punto flotante, mientras que la función parseInt() devuelve un número entero.
let cadenaDeTexto1 = "42";
let cadenaDeTexto2 = "3.14";
let numero1 = Number(cadenaDeTexto1); // Conversión a número de punto flotante
let numero2 = parseInt(cadenaDeTexto2); // Conversión a número entero
console.log(typeof cadenaDeTexto1); // salida: "string"
console.log(typeof cadenaDeTexto2); // salida: "string"
console.log(typeof numero1); // salida: "number"
console.log(typeof numero2); // salida: "number"
Coerción a boolean¶
En JavaScript, cualquier tipo de dato puede ser convertido a un valor booleano. Los valores que se consideran false en JavaScript son false, 0, "", null, undefined y NaN. A éstos valores se los conoce como valores “falsy”.
El resto de los valores se convierten en true, y son valores que llamamos “truthy”.
let valor1 = 1;
let valor2 = "";
let valor3 = undefined;
let valor4 = null;
console.log(Boolean(valor1)); // salida: true
console.log(Boolean(valor2)); // salida: false
console.log(Boolean(valor3)); // salida: false
console.log(Boolean(valor4)); // salida: false
¡Y eso es todo por ahora! La coerción de datos en JavaScript es una herramienta muy útil para convertir valores de un tipo de dato a otro cuando sea necesario, ya sea de forma implícita o explícita. Es importante tener en cuenta que la coerción implícita puede llevar a resultados inesperados o errores en nuestro código si no se maneja adecuadamente. Por eso es recomendable ser conscientes de las conversiones de datos que están ocurriendo en nuestro código y utilizar la coerción explícita cuando sea necesario para evitar confusiones o errores. Con un buen conocimiento de la coerción de datos en JavaScript, podemos escribir código más claro y efectivo para nuestras aplicaciones.
Buenas prácticas¶
- Evitar el uso de operadores de igualdad débil (==) y desigualdad débil (!=) ya que pueden provocar resultados inesperados debido a la coerción automática de tipos de datos. En su lugar, se recomienda utilizar los operadores de igualdad estricta (===) y desigualdad estricta (!==) que comparan tanto el valor como el tipo de dato.
- Utilizar los métodos nativos de conversión de tipos de datos, como parseInt(), parseFloat() y Number(), en lugar de usar conversiones implícitas. Esto ayuda a evitar errores y asegura una conversión precisa.
- Ser explícitos al convertir valores, en lugar de confiar en la coerción implícita. Por ejemplo, usar parseInt("10", 10) en lugar de solo parseInt("10").
- Entender cómo funciona la coerción de tipos de datos en JavaScript. Por ejemplo, tener en cuenta que una cadena vacía ("") se convierte en 0 cuando se usa en una operación aritmética.
- Usar isNaN() para verificar si un valor es NaN (Not a Number) en lugar de compararlo directamente con NaN.
- Usar typeof para verificar el tipo de dato de un valor en lugar de compararlo directamente con un tipo de dato.