Saltar al contenido principal

`Symbol.prototype.description`

· Lectura de un minuto
Mathias Bynens ([@mathias](https://twitter.com/mathias))

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

Soporte para Symbol.prototype.description