is 类型判断
基于 Object.prototype.toString 的精确类型判断,以及常用值的类型守卫。所有函数均为纯函数,不依赖 vue 及任何 UI 框架。
函数一览
| 函数 | 说明 | 示例 |
|---|---|---|
is(val, type) | 判断值是否为指定类型 | is('a', 'String') // true |
isDef(val) | 是否已定义(非 undefined) | isDef('a') // true |
isUnDef(val) | 是否未定义 | isUnDef(undefined) // true |
isUndefined(val) | 是否 undefined(isUnDef 别名) | isUndefined(undefined) // true |
isNull(val) | 是否为 null | isNull(null) // true |
isNullOrUnDef(val) | 是否为 null 或 undefined | isNullOrUnDef(null) // true |
isNil(val) | 是否 null 或 undefined(isNullOrUnDef 别名) | isNil(null) // true |
isObject(val) | 是否普通对象 | isObject({}) // true |
isDate(val) | 是否日期 | isDate(new Date()) // true |
isNumber(val) | 是否数字 | isNumber(1) // true |
isString(val) | 是否字符串 | isString('a') // true |
isBoolean(val) | 是否布尔 | isBoolean(true) // true |
isRegExp(val) | 是否正则 | isRegExp(/a/) // true |
isArray(val) | 是否数组 | isArray([1]) // true |
isMap(val) | 是否 Map | isMap(new Map()) // true |
isFunction(val) | 是否函数 | isFunction(() => {}) // true |
isPromise(val) | 是否 Promise | isPromise(Promise.resolve()) // true |
isWindow(val) | 是否 Window 对象 | isWindow(window) // true |
isElement(val) | 是否真实 DOM 元素 | isElement(document.body) // true |
isEmpty(val) | 是否为空(null/空串/空数组/空对象/空 Map·Set) | isEmpty([]) // true |
isEmptyVal(val) | 是否空值(''/null/undefined) | isEmptyVal('') // true |
hasKey(obj, key) | 对象是否有指定键 | hasKey({ a: 1 }, 'a') // true |
isDark() | 系统是否暗色模式(prefers-color-scheme) | isDark() // false |
类型签名
ts
function is(val: unknown, type: string): boolean
function isDef<T = unknown>(val?: T): val is T
function isUnDef(val: unknown): val is undefined
const isUndefined: (val: unknown) => val is undefined
function isNull(val: unknown): val is null
function isNullOrUnDef(val: unknown): val is null | undefined
const isNil: (val: unknown) => val is null | undefined
function isObject(val: unknown): val is Record<PropertyKey, unknown>
function isDate(val: unknown): val is Date
function isNumber(val: unknown): val is number
function isString(val: unknown): val is string
function isBoolean(val: unknown): val is boolean
function isRegExp(val: unknown): val is RegExp
function isArray(val: unknown): val is unknown[]
function isMap(val: unknown): val is Map<unknown, unknown>
function isFunction(val: unknown): val is (...args: any[]) => any
function isPromise<T = unknown>(val: unknown): val is Promise<T>
function isWindow(val: unknown): val is Window
function isElement(val: unknown): val is Element
function isEmpty(val: unknown): boolean
function isEmptyVal(val: unknown): boolean
function hasKey<T extends object, K extends PropertyKey>(obj: T, key: K): boolean
function isDark(): boolean示例
类型判断演示
isObject({})trueisObject([])falseisObject(null)falseisEmpty([])trueisEmpty({ a: 1 })falseisEmpty(0)falseisPromise(Promise.resolve())trueisFunction(() => {})trueisNumber(1)true