`Symbol.prototype.description`
· Lectura de un minuto
Los Symbols de JavaScript pueden tener una descripción al momento de su creación:
const symbol = Symbol('foo');
// ^^^^^
Anteriormente, la única forma de acceder a esta descripción programáticamente era indirectamente a través de Symbol.prototype.toString():
const symbol = Symbol('foo');
// ^^^^^
symbol.toString();
// → 'Symbol(foo)'
// ^^^
symbol.toString().slice(7, -1); // 🤔
// → 'foo'
Sin embargo, el código es un tanto mágico, no muy autoexplicativo, y viola el principio de “expresar intención, no implementación”. La técnica mencionada tampoco permite distinguir entre un símbolo sin descripción (es decir, Symbol()) y un símbolo cuya descripción es la cadena vacía (es decir, Symbol('')).
El nuevo getter Symbol.prototype.description proporciona una forma más ergonómica de acceder a la descripción de un Symbol:
const symbol = Symbol('foo');
// ^^^^^
symbol.description;
// → 'foo'
Para Symbols sin una descripción, el getter devuelve undefined:
const symbol = Symbol();
symbol.description;
// → undefined