判断值是否为空、undefined、空字符串、空数组、空对象、空Map、空Set

103 阅读1分钟

判断值是否为空

/**
 * 判断值是否为空、undefined、空字符串、空数组、空对象、空Map、空Set
 * @param value - 要检查的值
 */
export function isEmpty(value: any): boolean {
  // 检查值是否为 null 或 undefined
  if (value == null) {
    return true;
  }

  // 检查值是否为空字符串
  if (typeof value === 'string') {
    return value.trim().length === 0;
  }

  // 检查值是否为空数组
  if (Array.isArray(value)) {
    return value.length === 0;
  }

  // 检查值是否为空 Map 或 Set
  if (value instanceof Map || value instanceof Set) {
    return value.size === 0;
  }

  // 检查值是否为对象
  if (typeof value === 'object') {
    // 排除 Date、RegExp 和 Error 对象,这些对象不被视为“空”
    if (value instanceof Date || value instanceof RegExp || value instanceof Error) {
      return false;
    }
    // 检查对象是否为空对象
    return Object.keys(value).length === 0;
  }

  // 其他类型默认不被视为“空”
  return false;
}