@lightningspirit/isempty
TypeScript icon, indicating that this package has built-in type declarations

0.2.1 • Public • Published

isempty

A tiny dependency-free TS library to test for emptiness of any value. This is a missing type-safe feature for JavaScript/TypeScript.

Installation

npm i @lightningspirit/isempty

Basic Usage

import isempty from '@lightningspirit/isempty';

const object = {};

console.log(
  isempty(object) ? "Object is empty" : "Not empty"
);

Usage where false can be empty

isempty(false) // false
isempty(false, {
  falseIsEmpty: true
}) // true

Test if a value is boolean false

isempty.false(0) // false
isempty.false('') // false
isempty.false(false) // true

Considerations

What is considered to be empty:

  • null, undefined, '' are empty values.
  • {} is an empty object.
  • [] is an empty array.
  • Map, Array, Set, Object without members are empty.

What is not empty:

  • false is not empty, it holds a boolean value (see below for the reason).
  • Infinity, NaN are not empty, they both have values.
  • new Error(), new Function() are not empty objects, they have their semantic and are treated diferently.
  • 0 is not empty, it is an integer with a value (see below the reason).
  • ' ' is not empty, has a space character.

Questions:

Why is 0 not considered empty?

  1. In mathematics, zero is a number in the set of real numbers with empty magnitude while null is a term used to denote the empty nature of a quantity or an entity.
  2. Many bugs occur because most dynamic languages consider 0 as null/false. Take the following example:
const position = "The lazy fox".indexOf("The"); // 0
isempty(position) // false

Why is false not considered empty by default?

While false is the negation of something being true, the value itself does state nothing.

It can either be considered true has it holds a meaning value or false as a result of a conditional statement.

In mathematics and logic, these kind of conditions are often called vacuous truth. We considered false as a universal statement, which means it exists and is not empty, and the programmer must give it the semantics.

If you want to override this behaviour you can pass the falseIsEmpty option to the function as such:

isempty(false, {
  falseIsEmpty: true
}) // true

Package Sidebar

Install

npm i @lightningspirit/isempty

Weekly Downloads

1

Version

0.2.1

License

MIT

Unpacked Size

6.67 kB

Total Files

6

Last publish

Collaborators

  • lightningspirit