Menu

El tipo Symbol en ES6

ecmascript - October 10, 2019 por Carlos Rojas | Edita este Post.
EcmaScript6

En JavaScript existe algo que se llaman las primitivas estos es datos que No son Object y no tienen metodos. Con ES6 se incluye una nueva primitiva Symbol.

¿ Que son las Primitivas ?

Una forma sencilla de entender las primitivas es pensar en tipos de datos que no son Objetos, ademas, que representan el nivel más bajo de la implementación del lenguaje y son inmutables es decir, le puedes reasignar un valor a una primitiva pero no la puedes alterar de la misma manera que lo puedes hacer con Objetos, Arreglos y Funciones. Los 7 tipos de primitivas son: string, number, boolean, null, undefined, bigint y symbol.

// Usar un metodo en el string no cambia el valor.
var bar = "baz";
console.log(bar);               // baz
bar.toUpperCase();
console.log(bar);               // baz

// Usar un metodo en el Array cambia el Array.
var foo = [];
console.log(foo);               // []
foo.push("plugh");
console.log(foo);               // ["plugh"]

// El asignamiento da a la primitiva un nuevo (No mutado) valor.
bar = bar.toUpperCase();       // BAZ

Es algo simple pero el entendimiento de esto nos va a ayudar mucho en nuestro dia a dia.

¿ Que es symbol ?

Es un tipo de dato que nos permite generar identificadores unicos en nuestro codigo.

var sym1 = Symbol('foo');
var sym2 = Symbol('foo');

sym1 === sym2 // false

Acá podemos ver algo importante y es el uso de la funcion Symbol() que devuelve un valor de tipo symbol.

var sym1 = Symbol('foo'); // Good
var sym2 = new Symbol(); // TypeError

Ok, y ahora en que caso seria útil usar un symbol. Bueno lo puedes pensar en ocasiones donde necesitas identificadores que pueden aparecer varias veces en tu codigo y podrián confundirse con otros valores.

const operators = {
  plus:         Symbol('+'),
  multiply:     Symbol('x'),
  substraction: Symbol('-'),
  division:     Symbol('/'),
};

Ahora con algo asi podria asegurarme que solo al utilizar los botones identificados con esos botones pueden hacer esas operaciones en lugar de enviarle un string que podria estar presente o confundirse en cualquier parte de nuestro codigo.

Si este contenido te parece útil y me quieres ayudar a hacer mas, considera apoyarme en Patreon.

Bueno eso es todo por ahora. Espero sea de utilidad :)

¡Compártelo!