`Symbol.prototype.description`
· 1 мин. чтения
В JavaScript для Symbol можно задать описание при создании:
const symbol = Symbol('foo');
// ^^^^^
Ранее единственным способом программно получить это описание был непрямой вызов Symbol.prototype.toString():
const symbol = Symbol('foo');
// ^^^^^
symbol.toString();
// → 'Symbol(foo)'
// ^^^
symbol.toString().slice(7, -1); // 🤔
// → 'foo'
Однако этот код выглядит немного магически, не очень очевиден и нарушает принцип «выражать намерение, а не реализацию». Кроме того, данный метод не позволяет отличить символ без описания (например, Symbol()) от символа с пустой строкой в качестве описания (например, Symbol('')).
Новый геттер Symbol.prototype.description предоставляет более эргономичный способ доступа к описанию Symbol:
const symbol = Symbol('foo');
// ^^^^^
symbol.description;
// → 'foo'
Для Symbol без описания геттер возвращает undefined:
const symbol = Symbol();
symbol.description;
// → undefined