TypeScriptのSymbol
docs
#WIP
Symbol
http://js-next.hatenablog.com/entry/2014/03/01/001650
https://qiita.com/murank/items/04b3b31caa677750f240
https://qiita.com/naruto/items/312adeb6145eb6221be7
変更不可でユニーク
どんなときに使うのか
プロパティのキーとか
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
https://qiita.com/vvakame/items/3a1e628e53a5dd99dfe0
PR
unique symbol型同士の変数は互いに代入不可
https://www.pg-fl.jp/program/ts/kw-ref/symbol.htm
https://uncle-javascript.com/valid-typescript-chapter3
https://o296.com/2020/01/ts_unique.html