export const isMap = (val: unknown): val is Map => toTypeString(val) === "[object Map]" export const isSet = (val: unknown): val is Set => toTypeString(val) === "[object Set]" export const isDate = (val: unknown): val is Date => toTypeString(val) === "[object Date]" export const isRegExp = (val: unknown): val is RegExp => toTypeString(val) === "[object RegExp]" export const isPlainObject = (val: unknown): val is Record => toTypeString(val) === "[object Object]" // -------------------------------------------- const objectToString = Object.prototype.toString const toTypeString = (value: unknown): string => objectToString.call(value)