Получите описание символа ES6

Интересно, есть ли хороший способ получить описания Символа.

Например,

var s = Symbol(5);

Реализация toString по умолчанию будет просто печатать   Символ (5)

Я хотел бы найти способ извлечь фактическое описание, т.е. 5

Ответ 1

 String(symbol).slice(7, -1) || null

Это работает, потому что String(symbol) явно принуждает символ к строке, например. Symbol('test') принуждается к "Symbol(test)".

Выполнение сплайсинга от 7 до -1 делает сплайсинг между двумя скобками, таким образом, записывая описание test

Примечание: это может не работать для описания объектов (например, Symbol({test})), поскольку объекты принудительно вставляются в "[object Object]"

Ответ 2

Нет никакого опрятного способа сделать это. Однако, если вы зарегистрировали символ в глобальном реестре, вы можете использовать Symbol.keyFor():

var s = Symbol.for(5);
console.log(Symbol.keyFor(s));

Ответ 3

symbol-description пакет на npm

Возвращает описание предоставленного символа:

const symDesc = require('symbol-description')
symDesc(Symbol('foo')) // foo

Он был опубликован мной только сейчас после чтения этого ответа здесь.