export function isMap(x: any): x is Map {
if (!x) {
return false
}
const map = x as Map
return (
isFunction(map.set) &&
isFunction(map.get) &&
isFunction(map.has) &&
isFunction(map.delete) &&
isFunction(map.clear) &&
isFunction(map[Symbol.iterator])
)
}
export function isSet(x: any): x is Set {
if (!x) {
return false
}
const set = x as Set
return (
isFunction(set.add) &&
isFunction(set.clear) &&
isFunction(set.delete) &&
isFunction(set.has) &&
isFunction(set[Symbol.iterator])
)
}
export function isFunction(x: any): x is Function {
return typeof x === 'function'
}