export function computeIfAbsent(map: WeakMap, key: K, fn: () => V): V; export function computeIfAbsent(map: Map, key: K, fn: () => V): V; export function computeIfAbsent(map: Record, key: K, fn: () => V): V; export function computeIfAbsent(map: any, key: any, fn: () => any): any { if (map instanceof Map || map instanceof WeakMap) { if (!map.has(key)) { map.set(key, fn()); } return map.get(key)!; } if (!map[key]) { map[key] = fn(); } return map[key]; }