Tipos de datos

Naturaleza del contenido de una variable


Como ya hemos comentado en el apartado de fundamentos de programación, los tipos de datos son la naturaleza del contenido de una variable o constante. Por ejemplo, si tenemos una variable con contenido 44, su tipo de dato es un número. Si tenemos una variable con contenido "Manz", su tipo de dato es texto.

Tipos de datos en Javascript

En Javascript disponemos de los siguientes tipos de datos principales:

Tipo de dato Descripción Ejemplo básico
Number Valor numérico (enteros, decimales, etc...) 42
BigInt Valor numérico grande 1234567890123456789n
String Valor de texto (cadenas de texto, carácteres, etc...) 'MZ'
Boolean Valor booleano (valores verdadero o falso) true
undefined Valor sin definir (variable sin inicializar) undefined
Function Función (función guardada en una variable) function() {}
Symbol Símbolo (valor único) Symbol(1)
Object Objeto (estructura más compleja) {}

Para empezar, nos centraremos en los números, textos y booleanos, denominados los tipos de datos primitivos. En los siguientes temas veremos más detalles sobre los demás.

Para saber que tipo de dato tiene una variable, debemos observar que valor le hemos dado. Si es un valor numérico, será de tipo number. Si es un valor de texto, será de tipo string, si es verdadero o falso, será de tipo booleano. Veamos un ejemplo en el que identificaremos que tipo de dato tiene cada variable:

var text = "Hola, me llamo Manz";
var number = 42;
var boolean = true;
var notDefined;   // undefined

Como se puede ver, en este ejemplo, es muy sencillo saber que tipos de datos tienen cada variable.

¿Qué tipo de dato tiene?

Nos encontraremos que muchas veces no resulta tan sencillo saber que tipo de dato tiene una variable, o simplemente viene oculto porque el valor lo devuelve una función o alguna otra razón similar. Hay varias formas de saber que tipo de dato tiene una variable en Javascript:

Utilizando typeof()

Si tenemos dudas, podemos utilizar la función typeof, que nos devuelve el tipo de dato de la variable que le pasemos por parámetro. Veamos que nos devuelve typeof() sobre las variables del ejemplo anterior:

console.log(typeof text);       // "String"
console.log(typeof number);     // "Number"
console.log(typeof boolean);    // "Boolean"
console.log(typeof notDefined); // undefined

Como se puede ver, mediante la función typeof podremos determinar que tipo de dato se esconde en una variable. Observa también que la variable u, al haber sido declarada sin valor, Javascript le da un tipo de dato especial: undefined (sin definir).

OJO: La función typeof() no nos servirá para variables con tipos de datos más complejos, ya que siempre los mostrará como object. Es mejor utilizar constructor.name.

Utilizando constructor.name

Más adelante, nos encontraremos que en muchos casos, typeof() resulta insuficiente porque en tipos de datos más avanzados simplemente nos indica que son objetos. Con constructor.name podemos obtener el tipo de constructor que se utiliza, un concepto que veremos más adelante dentro del tema de clases. De momento, si lo necesitamos, podemos comprobarlo así:

console.log(text.constructor.name);       // String
console.log(number.constructor.name);     // Number
console.log(boolean.constructor.name);    // Boolean
console.log(notDefined.constructor.name); // ERROR, sólo funciona con variables definidas

OJO: Sólo funciona en variables definidas (no undefined) y sólo en o superiores.

Que Javascript determine los tipos de datos automáticamente no quiere decir que no debamos preocuparnos por ello. En muchos casos, debemos conocer el tipo de dato de una variable e incluso necesitaremos convertirla a otros tipos de datos antes de usarla. Más adelante veremos formas de convertir entre tipos de datos.

¿Quién soy yo?

Soy Manz, vivo en Tenerife (España) y soy streamer partner en Twitch y profesor. Me apasiona el universo de la programación web, el diseño y desarrollo web y la tecnología en general. Aunque soy full-stack, mi pasión es el front-end, la terminal y crear cosas divertidas y locas.

Puedes encontrar más sobre mi en Manz.dev