`Symbol.prototype.description`
· Leitura de um minuto
Os Symbol
s 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 Symbol
s sem uma descrição, o getter retorna undefined
:
const symbol = Symbol();
symbol.description;
// → undefined