import { TypeTag } from '@/common/utils/index.ts'

/**
 * 检查给定的值是否为字符串
 * @param obj 待检查的对象
 */
function isString(obj: any) {
  return obj != null &&
    (typeof obj === 'string' ||
      (typeof obj === 'object' &&
        !Array.isArray(obj) &&
        Object.prototype.toString.call(obj) === TypeTag.STRING))
}

/**
 * 检查给定的值是否为 JS 日期（Date）
 * @param obj 待检查的对象
 */
function isDate(obj: any) {
  return obj != null &&
    (typeof obj === 'object' &&
      Object.prototype.toString.call(obj) === TypeTag.DATE)
}

/**
 * 检查给定的值是否为数字
 * @param obj 待检查的对象
 */
function isNumber(obj: any) {
  return obj != null &&
    (typeof obj === 'number' ||
      (typeof obj === 'object' &&
        Object.prototype.toString.call(obj) === TypeTag.NUMBER))
}

export default {
  isString,
  isDate,
  isNumber,
}
