ES6 introduce un nuevo tipo de dato primitivo llamado “symbol”. Los símbolos son inmutables y únicos, por tanto, no podremos cambiar su valor, el cual será siempre único.
Para declarar un símbolo lo tenemos que hacer utilizando la función Symbol():
1 2 3 4 5 6 7 8 |
const symbol1 = Symbol(); console.log(typeof symbol1); // symbol const symbol2 = Symbol('name'); console.log(typeof symbol2); // symbol |
Como ves, también podemos poner entre los paréntesis un parámetro descripción, el cual nos servirá para identificar y obtener el símbolo para poder utilizarlo.
Para confirmar que el valor es único, vamos a generar dos símbolos iguales y comprobamos si son iguales:
1 2 3 4 5 |
const symbol1 = Symbol(); const symbol3 = Symbol(); console.log(symbol1 === symbol3); // false |
Como hemos dicho antes, efectivamente son únicos, ya que estamos comprobando tanto que su valor sea igual como el tipo de dato y el resultado es negativo.
Al ser inmutables, si intentamos cambiar el valor de la variable nos da un error diciendo que es una variable de solo lectura:
1 |
symbol1 = 'string'; // Error |
Para ver los trozos de código anteriores en vivo: https://repl.it/@vreaxe/ES6-Symbols
Uno de los usos que se le puede dar a los símbolos es para utilizarlos como key en arrays o objetos para asegurarnos que serán únicos. Si quieres profundizar más sobre los símbolos puedes echarle un vistazo a este enlace.