mirror of
https://gitee.com/wanwujie/sub2api
synced 2026-04-03 23:12:14 +08:00
20 lines
467 B
TypeScript
20 lines
467 B
TypeScript
let globalStableObjectKeySeed = 0
|
||
|
||
/**
|
||
* 为对象实例生成稳定 key(基于 WeakMap,不污染业务对象)
|
||
*/
|
||
export function createStableObjectKeyResolver<T extends object>(prefix = 'item') {
|
||
const keyMap = new WeakMap<T, string>()
|
||
|
||
return (item: T): string => {
|
||
const cached = keyMap.get(item)
|
||
if (cached) {
|
||
return cached
|
||
}
|
||
|
||
const key = `${prefix}-${++globalStableObjectKeySeed}`
|
||
keyMap.set(item, key)
|
||
return key
|
||
}
|
||
}
|