Symbol.prototype.description

発行日 · タグ ECMAScript ES2019

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

Symbol.prototype.description サポート #