# All files / src/utils is.ts

85% Statements 17/20
80% Branches 8/10
100% Functions 7/7
85% Lines 17/20

Press n or j to go to the next uncovered block, b, p or k for the previous block.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    8814x

    154x
    72x

    14x

    14x
    2x

    1x

    1x

    14x
    3x

    14x
    5x

    14x
    3x

    3x

    14x
    3x

     export const nativeToString = Object.prototype.toString
    function isType(type: string) {
      return function (value: any): boolean {
        return nativeToString.call(value) === `[object ${type}]`
      }
    }

    /**
     * 检测变量类型
     * @param type
     */
    export const variableTypeDetection = {
      isNumber: isType('Number'),
      isString: isType('String'),
      isBoolean: isType('Boolean'),
      isNull: isType('Null'),
      isUndefined: isType('Undefined'),
      isSymbol: isType('Symbol'),
      isFunction: isType('Function'),
      isObject: isType('Object'),
      isArray: isType('Array'),
      isProcess: isType('process'),
      isWindow: isType('Window')
    }

    /**
     * Checks whether given value's type is one of a few Error or Error-like
     * {../link isError}.
     *
     * ../param wat A value to be checked.
     * ../returns A boolean representing the result.
     */
    export function isError(wat: any): boolean {
      switch (nativeToString.call(wat)) {
        case '[object Error]':
          return true
        case '[object Exception]':
          return true
        case '[object DOMException]':
          return true
        default:
          return isInstanceOf(wat, Error)
      }
    }

    /**
     * 检查是否是空对象
     * ../param obj 待检测的对象
     */
    export function isEmptyObject(obj: Object): boolean {
      return variableTypeDetection.isObject(obj) && Object.keys(obj).length === 0
    }

    export function isEmpty(wat: any): boolean {
      return (variableTypeDetection.isString(wat) && wat.trim() === '') || wat === undefined || wat === null
    }

    /**
     * Checks whether given value has a then function.
     * ../param wat A value to be checked.
     */
    // export function isThenable(wat: any): boolean {
    //   // tslint:disable:no-unsafe-any
    //   return Boolean(wat && wat.then && typeof wat.then === 'function')
    //   // tslint:enable:no-unsafe-any
    // }

    /**
     * Checks whether given value's type is an instance of provided constructor.
     * {../link isInstanceOf}.
     *
     * ../param wat A value to be checked.
     * ../param base A constructor to be used in a check.
     * ../returns A boolean representing the result.
     */
    export function isInstanceOf(wat: any, base: any): boolean {
      try {
        // tslint:disable-next-line:no-unsafe-any
        return wat instanceof base
      } catch (_e) {
        return false
      }
    }

    export function isExistProperty(obj: Object, key: string | number | symbol): boolean {
      return obj.hasOwnProperty(key)
    }