Qué son los tipos primitivos

Fácil - 2 min. lectura

En Javascript existen algunos tipos de datos que son tratados como los datos más básicos del lenguaje. A estos los llamamos tipos primitivos.

Básicamente, podemos decir que un tipo primitivo es aquel que no es un objeto, por lo que ni tiene métodos ni propiedades. Como característica especial debemos saber que todos los primitivos son datos inmutables, es decir, no pueden modificarse.

El nuevo standard de EMACScript define seis tipos de datos primitivos:

  • undefined: Es un tipo de dato que se asignan automáticamente a las variables que solo han sido declaradas.
  • boolean: Es un tipo que donde solo tenemos dos posibilidades (entidad lógica): verdadero (true) o falso (false).
  • Number: Es un tipo de dato numérico en coma flotante de 64 bits de doble precisión, siendo capaz de representar números entre 2 ⁻1074 y 2 1024 aunque solo es posible operar de manera segura con números entre -(2 53 -1) y (2 53 -1). Para el tipo número no hay diferencia como en otros lenguajes de numeros enteros (int), flotantes (float) ya que todos son tratados con el tipo number.
  • String: Es un tipo usado para expresar cualquier secuencia de caracteres para representar texto.
  • BigInt: Se introdujo en ES6 para poder operar con números mayores a 2 53 -1
  • Symbol: Es un tipo de valor primitivo único e inmutable.

Adicionalmente podemos encontrarnos con un tipo de dato especial, null.

Null representa la ausencia de valor. Este tipo puede inducir a muchos errores, ya que por un error de diseño del propio lenguaje, cuando hacemos un typeof de un objeto null, nos devolverá un object.

typeof undefined // undefined
typeof false // boolean
typeof 2022 // number
typeof "Hola mundo" // string
typeof BigInt(Number.MAX_SAFE_INTEGER) // bigint
typeof Symbol("a") // symbol
typeof null // object

Anteriormente comentamos que los tipos primitivos no tienen métodos, pero entonces ¿por qué funciona esto?

"hola mundo".toUpperCase() // HOLA MUNDO

Cuando Brendan Eich ideó Javascript se percató que había muchas cosas que deberían poder hacerse con tipos primitivos, pero para ello se deberían poder usar como objetos.

Por ello, el motor de javascript envuelve automáticamente todos los primitivos (salvo null y undefined) en objectos llamados: String, Number, Boolean, Symbol, BigInt aunque sólo son usados como objetos cuando los manipulamos.