Skip to content

isEmpty

Checks whether a value is empty (null, undefined, empty string, empty array, empty object, etc.).

Syntax

typescript
isEmpty(value: any): boolean

Parameters

  • value (any): The value to check

Return Value

  • boolean: Returns true if the value is empty, false otherwise

Examples

Basic Usage

typescript
import { isEmpty } from 'radash'

isEmpty(null) // true
isEmpty(undefined) // true
isEmpty('') // true
isEmpty([]) // true
isEmpty({}) // true
isEmpty(0) // false
isEmpty('hello') // false
isEmpty([1, 2, 3]) // false
isEmpty({ key: 'value' }) // false

Handling Strings

typescript
import { isEmpty } from 'radash'

isEmpty('') // true
isEmpty('   ') // true (only contains spaces)
isEmpty('hello') // false
isEmpty('0') // false
isEmpty('false') // false

Handling Arrays

typescript
import { isEmpty } from 'radash'

isEmpty([]) // true
isEmpty([null]) // false
isEmpty([undefined]) // false
isEmpty([1, 2, 3]) // false
isEmpty(['']) // false

Handling Objects

typescript
import { isEmpty } from 'radash'

isEmpty({}) // true
isEmpty({ key: 'value' }) // false
isEmpty({ null: null }) // false
isEmpty({ undefined: undefined }) // false

Handling Numbers

typescript
import { isEmpty } from 'radash'

isEmpty(0) // false
isEmpty(1) // false
isEmpty(-1) // false
isEmpty(NaN) // false
isEmpty(Infinity) // false

Handling Booleans

typescript
import { isEmpty } from 'radash'

isEmpty(true) // false
isEmpty(false) // false

Handling Functions

typescript
import { isEmpty } from 'radash'

isEmpty(() => {}) // false
isEmpty(function() {}) // false
isEmpty(async () => {}) // false

Handling Dates

typescript
import { isEmpty } from 'radash'

isEmpty(new Date()) // false
isEmpty(new Date('invalid')) // false

Handling Map and Set

typescript
import { isEmpty } from 'radash'

isEmpty(new Map()) // true
isEmpty(new Map([['key', 'value']])) // false
isEmpty(new Set()) // true
isEmpty(new Set([1, 2, 3])) // false

Handling Regular Expressions

typescript
import { isEmpty } from 'radash'

isEmpty(/pattern/) // false
isEmpty(new RegExp('pattern')) // false

Handling Symbol

typescript
import { isEmpty } from 'radash'

isEmpty(Symbol()) // false
isEmpty(Symbol('description')) // false

Handling Class Instances

typescript
import { isEmpty } from 'radash'

class Example {
  constructor() {
    this.value = 'test'
  }
}

isEmpty(new Example()) // false
isEmpty(new Date()) // false
isEmpty(new Array()) // true
isEmpty(new Object()) // true

Form Validation

typescript
import { isEmpty } from 'radash'

function validateForm(data: any) {
  const errors: string[] = []
  
  if (isEmpty(data.name)) {
    errors.push('Name cannot be empty')
  }
  
  if (isEmpty(data.email)) {
    errors.push('Email cannot be empty')
  }
  
  if (isEmpty(data.hobbies)) {
    errors.push('Hobbies cannot be empty')
  }
  
  return errors
}

const formData = {
  name: '',
  email: 'alice@example.com',
  hobbies: []
}

const errors = validateForm(formData)
// ['Name cannot be empty', 'Hobbies cannot be empty']

API Response Processing

typescript
import { isEmpty } from 'radash'

async function fetchData() {
  const response = await fetch('/api/users')
  const data = await response.json()
  
  if (isEmpty(data)) {
    throw new Error('No data returned')
  }
  
  return data
}

try {
  const users = await fetchData()
  console.log('User data:', users)
} catch (error) {
  console.error('Failed to fetch data:', error.message)
}

Configuration Validation

typescript
import { isEmpty } from 'radash'

function validateConfig(config: any) {
  const requiredFields = ['apiKey', 'baseUrl', 'timeout']
  const missingFields = []
  
  for (const field of requiredFields) {
    if (isEmpty(config[field])) {
      missingFields.push(field)
    }
  }
  
  if (missingFields.length > 0) {
    throw new Error(`Missing required configuration: ${missingFields.join(', ')}`)
  }
  
  return config
}

const config = {
  apiKey: '',
  baseUrl: 'https://api.example.com',
  timeout: 5000
}

try {
  validateConfig(config)
} catch (error) {
  console.error('Configuration validation failed:', error.message)
  // Output: Configuration validation failed: Missing required configuration: apiKey
}

Data Cleaning

typescript
import { isEmpty } from 'radash'

function cleanData(data: any) {
  const cleaned: any = {}
  
  for (const [key, value] of Object.entries(data)) {
    if (!isEmpty(value)) {
      cleaned[key] = value
    }
  }
  
  return cleaned
}

const rawData = {
  name: 'Alice',
  email: '',
  phone: null,
  address: undefined,
  hobbies: [],
  notes: '   '
}

const cleanedData = cleanData(rawData)
// { name: 'Alice', notes: '   ' }

Conditional Rendering

typescript
import { isEmpty } from 'radash'

function renderUserProfile(user: any) {
  if (isEmpty(user)) {
    return '<div>User does not exist</div>'
  }
  
  if (isEmpty(user.avatar)) {
    return `
      <div>
        <h1>${user.name}</h1>
        <p>Default avatar</p>
      </div>
    `
  }
  
  return `
    <div>
      <h1>${user.name}</h1>
      <img src="${user.avatar}" alt="Avatar" />
    </div>
  `
}

Recursive Checking

typescript
import { isEmpty } from 'radash'

function deepIsEmpty(obj: any): boolean {
  if (isEmpty(obj)) {
    return true
  }
  
  if (Array.isArray(obj)) {
    return obj.every(item => deepIsEmpty(item))
  }
  
  if (typeof obj === 'object' && obj !== null) {
    return Object.values(obj).every(value => deepIsEmpty(value))
  }
  
  return false
}

const nestedData = {
  level1: {
    level2: {
      level3: []
    }
  }
}

deepIsEmpty(nestedData) // true

Notes

  1. Empty Value Check: Checks for null, undefined, empty string, empty array, empty object
  2. Whitespace Strings: Strings containing only spaces are considered empty
  3. Numbers: 0 is not considered empty
  4. Booleans: false is not considered empty

Differences from Other Functions

  • isEmpty: Checks if value is empty
  • isNull: Only checks for null
  • isUndefined: Only checks for undefined
  • isString: Checks if value is a string

Performance

  • Time Complexity: O(1)
  • Space Complexity: O(1)
  • Use Cases: Data validation, form processing, API response checking

Released under the MIT License.