export function isNumber(value: T | unknown): value is number { return Object.prototype.toString.call(value) === '[object Number]' } export function isString(value: T | unknown): value is string { return Object.prototype.toString.call(value) === '[object String]' } export function isBoolean(value: T | unknown): value is boolean { return Object.prototype.toString.call(value) === '[object Boolean]' } export function isNull(value: T | unknown): value is null { return Object.prototype.toString.call(value) === '[object Null]' } export function isUndefined(value: T | unknown): value is undefined { return Object.prototype.toString.call(value) === '[object Undefined]' } export function isObject(value: T | unknown): value is object { return Object.prototype.toString.call(value) === '[object Object]' } export function isArray(value: T | unknown): value is T { return Object.prototype.toString.call(value) === '[object Array]' } export function isFunction any | void | never>(value: T | unknown): value is T { return Object.prototype.toString.call(value) === '[object Function]' } export function isDate(value: T | unknown): value is T { return Object.prototype.toString.call(value) === '[object Date]' } export function isRegExp(value: T | unknown): value is T { return Object.prototype.toString.call(value) === '[object RegExp]' } export function isPromise>(value: T | unknown): value is T { return Object.prototype.toString.call(value) === '[object Promise]' } export function isSet>(value: T | unknown): value is T { return Object.prototype.toString.call(value) === '[object Set]' } export function isMap>(value: T | unknown): value is T { return Object.prototype.toString.call(value) === '[object Map]' } export function isFile(value: T | unknown): value is T { return Object.prototype.toString.call(value) === '[object File]' }