Pular para o conteúdo principal

`Symbol.prototype.description`

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

Os Symbols do JavaScript podem receber uma descrição ao serem criados:

const symbol = Symbol('foo');
// ^^^^^

Anteriormente, a única maneira de acessar essa descrição de forma programática era indiretamente através de Symbol.prototype.toString():

const symbol = Symbol('foo');
// ^^^^^
symbol.toString();
// → 'Symbol(foo)'
// ^^^
symbol.toString().slice(7, -1); // 🤔
// → 'foo'

No entanto, o código parece um pouco mágico, não é muito autoexplicativo, e viola o princípio "exprima a intenção, não a implementação". A técnica acima também não permite distinguir entre um símbolo sem descrição (ou seja, Symbol()) e um símbolo com uma string vazia como descrição (ou seja, Symbol('')).

O novo getter Symbol.prototype.description fornece uma maneira mais ergonômica de acessar a descrição de um Symbol:

const symbol = Symbol('foo');
// ^^^^^
symbol.description;
// → 'foo'

Para Symbols sem uma descrição, o getter retorna undefined:

const symbol = Symbol();
symbol.description;
// → undefined

Suporte para Symbol.prototype.description