Tipos de datos

Naturaleza del contenido de una variable o constante


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. En algunos lenguajes se hace de forma explícita, y en algunos otros lenguajes se hace de forma implí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 va a contener. En consecuencia, el valor asignado finalmente, siempre deberá ser del tipo de dato que hemos indicado (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 deducir o inferir el tipo de dato (dependiendo del valor que le hayamos asignado).

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.

En los lenguajes dinámicos, realmente el tipo de dato se asocia al valor (y no a la variable). Así 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, solemos hablar de variables y sus respectivos tipos de datos.

¿Qué es mejor?

Para algunos desarrolladores (nóveles, que necesitan flexibilidad, etc...) los lenguajes donde no tienes que indicar el tipo de dato les resulta mucho más cómodo y agradable, ya que es mucho más rápido y productivo declarar variables sin tener que preocuparte del tipo de dato que necesitan.

Sin embargo, para otros desarrolladores (tradicionales, backend, etc...) los lenguajes donde no tienes que indicar el tipo de dato les resulta una desventaja, ya que pierden el control de la información almacenada y en muchas ocasiones esto puede desembocar en problemas o situaciones inesperadas.

Javascript

Es importante recalcar que en Javascript, aunque no tengamos que indicar el tipo de dato de cada variable, los tipos de datos existen, se puede acceder a ellos e incluso convertir entre un tipo de dato y otro.

const valueAsText = "50";
const valueAsNumber = 50;
const convertedValue = Number("50");

console.log(valueAsText);    // "50"
console.log(valueAsNumber);  // 50
console.log(convertedValue); // 50

Observa que en el ejemplo anterior, la constante valueAsText tiene un tipo de dato de texto, mientras que la constante valueAsNumber tiene un tipo de dato numérico. Hemos utilizado Number() para forzar un texto y convertirlo a otro tipo de dato (numérico).

Typescript

Aunque en Javascript existen mecanismos para convertir o forzar los tipos de datos de las variables, muchos programadores prefieren indicar explícitamente los tipos de datos, ya que esto les aporta cierta confianza y seguridad, especialmente en aplicaciones muy grandes o donde hay muchos programadores diferentes modificando código.

Estos desarrolladores suelen optar por utilizar lenguajes como Typescript, que no es más que «varias capas de características añadidas» sobre Javascript, convirtiéndolo en un lenguaje más parecido a, por ejemplo, Java:

const valueAsText : string = "50";
const valueAsNumber : number = 50;

Sin embargo, es importante recordar que Typescript no es un lenguaje que el navegador entiende, sino un lenguaje que añade funcionalidades que el programador necesita o prefiere, y luego es convertido a Javascript para que el navegador pueda entenderlo.

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.

¿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