TypeScriptのSymbol
Symbol
変更不可でユニーク
どんなときに使うのか
プロパティのキーとか
prototype
valueOf()
自分自身のシンボルを返す
sym1 === sym1.valueOf() // true
toString()
名前が含まれた表記を返す
code:js
sym1.toString() // "Symbol()"
sym2.toString() // "Symbol(name)"
for()
異なる場所間で同一のシンボルを共有したい場合に使える
code:js
sym1 = Symbol.for('abc') // 新しく作られ、登録される
sym2 = Symbol.for('abc') // 登録されたものが返される
sym1 === sym2 // true
key()
keyFor()
シンボルがどういう文字列に紐付けられているかを確認
code:js
sym1 = Symbol.for('abc')
Symbol.keyFor(sym1) // "abc"
unique symbol type
constを使ってSymbolのインスタンスを作るとこの型になる
letではならない
code:ts
const e = Symbol("e") // typeof e
let f = Symbol("f") // symbol
unique symbol型同士の変数は互いに代入不可