Skip to content

types.js用于类型判断的工具函数

上次更新 2024年6月25日星期二 13:58:14 字数 0 字 时长 0 分钟

js

export function isString(obj) {
  return Object.prototype.toString.call(obj) === '[object String]'
}

export function hasString(obj) {
  return isString(obj) && obj.trim() !== ''
}

export function isNumber(obj) {
  return Object.prototype.toString.call(obj) === '[object Number]' && !isNaN(obj)
}

export function isObject(obj) {
  return Object.prototype.toString.call(obj) === '[object Object]'
}

export function isArray(obj) {
  return Object.prototype.toString.call(obj) === '[object Array]'
}

export function isMap(obj) {
  return Object.prototype.toString.call(obj) === '[object Map]'
}

export function isHtmlElement(node) {
  return node && node.nodeType === Node.ELEMENT_NODE
}

export function isBoolean(obj) {
  return typeof obj === 'boolean'
}

/**
 *  - Inspired:
 *    https://github.com/jashkenas/underscore/blob/master/modules/isFunction.js
 */
let isFunction = (functionToCheck) => {
  const getType = {}
  return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]'
}

if (
  typeof /./ !== 'function' &&
  typeof Int8Array !== 'object' &&
  typeof document.childNodes !== 'function'
) {
  isFunction = function (obj) {
    return typeof obj === 'function' || false
  }
}

export { isFunction }

export const isUndefined = (val) => val == null || val === void 0

export const isDefined = (val) => val !== undefined && val !== null
export default {
  isArray,
  isString,
  isDefined,
  isFunction,
  isUndefined,
  isHtmlElement,
  isMap,
  isObject,
  hasString,
  isBoolean
}

上次更新: