Conversión de tipos en JavaScript (coerción implicita y explícita)
La mayor parte del tiempo JavaScript realiza conversiones de tipo sin casi darnos cuenta si quiera de ello. El día de hoy, veremos estas conversiones que pasan casi sin nuestro consentimiento y otros tipos de conversiones sobre las cuáles si tenemos control.
Conversión a Strings
Esta conversión ocurre cada vez que se requiere un string en algún punto del script. Dado que javascript se encarga de realizar esta conversión suele llamarse coerción implícita (implicit coercion). Un ejemplo de esta conversión ocurre cuando intentamos sumar un string y un número.
let a = 5;
let b = '6';
let sum = a + b; // '56'
typeof sum; // string
También es posible convertir explícitamente un valor a string utilizando el objeto de envoltura String. Este tipo de conversión utilizando el wrapper object suele ser llamada coerción explícita (explicit coercion).
let b = true;
value = String(b); // now value is a string "true"
typeof value; // string
Conversion Numérica
La conversión numérica ocurre cada vez que se requiere un número en algún punto del script. Un ejemplo de esta conversión ocurre cuando se operan matemáticamente dos strings numéricos. Lo curioso, es que ocurre con todos los operadores menos con el signo + (ver conversión a strings).
let a = '3';
let b = '4';
let times = a * b; // 12
typeof times; // number
Para otros tipos de datos, la conversión resulta ser similar a cómo se convertía ese tipo con el wrapper object.
undefined + 6; // NaN, ya que undefined es NaN
null + 25; // 25, ya que null=0
true + true; // 2, ya que true=1
También es posible convertir explícitamente un valor a número utilizando el objeto de envoltura Number.
let c = '4';
let num = Number(c); // 4
typeof num; // number
Conversion a Boolean
La conversión a boolean ocurre cada vez que se requiere un booleano en algún punto del script. Un ejemplo de esta conversión puede ocurrir en las sentencias de desición.
let name = 'John Doe';
if (name) {
console.info('Hello ' + name);
}
También es posible convertir explícitamente un valor a booleano utilizando el objeto de envoltura Boolean.
let b = 1;
let c = Boolean(b); // true
typeof c; // boolean
Si te ha sonado un poco raro esto de los objetos de envoltura te invito a revisar el post Objetos de envoltura en Javascript en donde podrás obtener una apreciación más completa del comportamiento de estos objetos. Además podrás observar un poco más a detalle la conversión de valores comunes en javascript.