Files
sub2api/frontend/src/utils/stableObjectKey.ts

20 lines
467 B
TypeScript
Raw Normal View History

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
}
}