Tipos de datos

En Javascript, al igual que en la mayoría de los lenguajes de programación, al declarar una variable y guardar su contenido, también le estamos asignando un tipo de dato, ya sea de forma implícita o explícita. El tipo de dato no es más que la naturaleza de su contenido: contenido numérico, contenido de texto, etc...

¿Qué tipos de lenguajes existen?

A grandes rasgos, nos podemos encontrar con dos tipos de lenguajes de programación:

  • Lenguajes estáticos: Cuando creamos una variable, debemos indicar el tipo de dato del valor que contienen (o va a contener). Obviamente, al asociar un valor a esa variable, dicho valor debe ser de ese tipo de dato (si definimos que es un número debe ser un número, si definimos que es un texto debe ser un texto, etc...).

  • Lenguajes dinámicos: Cuando creamos una variable, no es necesario indicarle el tipo de dato que va a contener. El lenguaje de programación se encargará de establecer el tipo de dato, dependiendo del valor que tenga esa variable.

En el caso de los lenguajes dinámicos, realmente el tipo de dato se asocia al valor (en lugar de a la variable). De esta forma, es mucho más fácil entender que a lo largo del programa, dicha variable puede «cambiar» a tipos de datos diferentes, ya que la restricción del tipo de dato está asociada al valor y no a la variable en sí. No obstante, para simplificar, en los primeros temas siempre hablaremos de variables y sus tipos de datos respectivos.

Javascript pertenece a los lenguajes dinámicos, ya que automáticamente detecta de que tipo de dato se trata en cada caso, dependiendo del contenido que le hemos asignado a la variable.

Para algunos desarrolladores —sobre todo, nóveles— esto les resulta una ventaja, ya que es mucho más sencillo declarar variables sin tener que preocuparte del tipo de dato que necesitan. Sin embargo, para muchos otros desarrolladores —generalmente, avanzados— es una desventaja, ya que pierdes el control de la información almacenada y esto en muchas ocasiones puede desembocar en problemas o situaciones inesperadas.

En Javascript existen mecanismos para convertir o forzar los tipos de datos de las variables, sin embargo, los programadores que prefieren declarar explícitamente los tipos de datos, suelen optar por utilizar lenguajes como Typescript (que puede verse como Javascript con algunos añadidos) o sistemas como Flow.

En muchas ocasiones (y de manera informal) también se suele hacer referencia a lenguajes tipados (tipado fuerte, o fuertemente tipado) o lenguajes no tipados (tipado débil, debilmente tipado), para indicar si el lenguaje requiere indicar manualmente el tipo de dato de las variables o no, respectivamente.

¿Qué son los tipos de datos?

En Javascript disponemos de los siguientes tipos de datos:

Tipo de dato Descripción Ejemplo básico
Number number Valor numérico (enteros, decimales, etc...) 42
String string Valor de texto (cadenas de texto, carácteres, etc...) 'MZ'
Boolean boolean Valor booleano (valores verdadero o falso) true
Undefined undefined Valor sin definir (variable sin inicializar) undefined
Function function Función (función guardada en una variable) function() {}
Object object Objeto (estructura más compleja) {}

Para empezar, nos centraremos en los tres primeros, denominados tipos de datos primitivos, y en los temas siguientes veremos detalles sobre los siguientes.

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 s = 'Hola, me llamo Manz';  // s, de string
var n = 42;                     // n, de número
var b = true;                   // b, de booleano
var u;                          // u, de undefined

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

¿Qué tipo de dato tiene una variable?

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(s) );       // "string"
console.log( typeof(n) );       // "number"
console.log( typeof(b) );       // "boolean"
console.log( typeof(u) );       // "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).

La función typeof() solo sirve para variables con tipos de datos básicos o primitivos.

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(s.constructor.name);  // String
console.log(n.constructor.name);  // Number
console.log(b.constructor.name);  // Boolean
console.log(u.constructor.name);  // ERROR, sólo funciona con variables definidas

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

Que Javascript determine los tipos de datos automáticamente no quiere decir que debamos despreocuparnos 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.

Manz
Publicado por Manz

Docente, divulgador informático y freelance. Escribe en Emezeta.com, es profesor en la Oficina de Software Libre de la Universidad de La Laguna y dirige el curso de Programación web FullStack de EOI en Tenerife (Canarias). En sus ratos libres, busca GIF de gatos en Internet.