Skip to content
On this page

Is 判断函数

我们经常需要对数据的类型进行判断,然后程序才能往下执行,所以把很多常用的is判断函数列举出来。

is

判断两个值是否相等

ts
// 用于判断数据类型的字段有String、Array、Number、Boolean、Null、Undefined、Object、Date、Function等
is(2, 'String') // false
is('2', 'String') // true

is( [], 'Array' )   // true

is('1', 'Number')   // false
is(true, 'Boolean') // true
is(null, 'Null')    // true

isString 是否为字符串

ts
isString('111') // true

isNumber 是否为数字

ts
isNumber(122) // true

isBoolean 是否为布尔值

ts
isBoolean(false)    // true

isNull 是否为空值

ts
isNull(false)    // false

isObject 是否为对象

ts
isObject({}) // true

isArray 是否为数组

ts
isArray({}) // false

isFunction

是否为函数

ts
isFunction(() => {}) // true

isDate

是否为时间

ts
isDate(new Date()) // true

isDef 不为undefined

ts
const a = '11'
isDef(a) // true

isUnDef 为undefined

ts
const a = '11'
isUnDef(b) // true

isNullOrUnDef 是否为空值或者undefined

ts
export function isNullOrUnDef(val: unknown): val is null | undefined {
    return isUnDef(val) || isNull(val)
}

isVnode 是否为渲染函数

ts
export function isVnode (vnode: any): vnode is VNode {
    return vnode && vnode.__v_isVNode === true
}

isPromise 是否为承诺

ts
export function isPromise<T = any>(val: unknown): val is Promise<T> {
    return is(val, 'Promise') && isObject(val) && isFunction(val.then) && isFunction(val.catch)
}

isElement 是否为元素

ts
export function isElement(val: unknown): val is Element {
    return isObject(val) && !!val.tagName
}

isWindow

是否为window窗口

ts
export function isWindow(val: any): val is Window {
    return typeof window !== 'undefined' && is(val, 'Window');
}

isEmpty

是否为空

ts
export function isEmpty<T = unknown>(val: T): val is T {
    if (isArray(val) || isString(val)) {
        return val.length === 0
    }

    if (val instanceof Map || val instanceof Set) {
        return val.size === 0
    }

    if (isObject(val)) {
        return Object.keys(val).length === 0
    }

    return false
}