`Symbol.prototype.description`
· Une minute de lecture
Les Symbol
en JavaScript peuvent recevoir une description lors de leur création :
const symbol = Symbol('foo');
// ^^^^^
Auparavant, la seule façon d'accéder à cette description par programme était de manière indirecte via Symbol.prototype.toString()
:
const symbol = Symbol('foo');
// ^^^^^
symbol.toString();
// → 'Symbol(foo)'
// ^^^
symbol.toString().slice(7, -1); // 🤔
// → 'foo'
Cependant, ce code semble légèrement magique, pas très explicite, et viole le principe « exprimer l'intention, non l'implémentation ». Cette technique ne permet pas non plus de faire la distinction entre un symbole sans description (c'est-à-dire Symbol()
) et un symbole dont la description est une chaîne vide (c'est-à-dire Symbol('')
).
Le nouveau getter Symbol.prototype.description
offre un moyen plus ergonomique d'accéder à la description d'un Symbol
:
const symbol = Symbol('foo');
// ^^^^^
symbol.description;
// → 'foo'
Pour les Symbol
sans description, le getter retourne undefined
:
const symbol = Symbol();
symbol.description;
// → undefined