🤖
using に対応した Symbol を作る
[Symbol.dispose]
プロパティを付与したい
Symbol に スコープ外を検知してセルフGCするSymbol型、要はスマートポインタもどきをピュアに実装したい
いやいや、Symbol はプリミティブでしょうが…はい
解: [Symbol.toPrimitive]() で Symbol を返却するオブジェクトを作る
当たり前と言えば当たり前の話、({ [Symbol.toPrimitive]: () => someSymbol })
と someSymbol
はプロパティとして同様の働きをする
const MY_SYMBOL: symbol = Symbol("address");
using GC_SYMBOL: any = {
[Symbol.toPrimitive](): symbol {
return MY_SYMBOL
},
[Symbol.dispose](): void {
// 参照外になり次第、実行されます^^
delete target[MY_SYMBOL]; // これはやりすぎ
}
}
const target = {
[MY_SYMBOL]: "success"
}
target[MY_SYMBOL] === target[GC_SYMBOL] // true!!!!!!!!!!!!
いかがでしたか?
using
来てるな〜という気持ちです(まだ来てねーよ
Discussion