@hugoalh/undefinish

A module to provide a better and easier coalescing, similar to the function default parameter.

Usage no npm install needed!

<script type="module">
  import hugoalhUndefinish from 'https://cdn.skypack.dev/@hugoalh/undefinish';
</script>

README

Undefinish (NodeJS)

Undefinish.NodeJS GitHub Contributors GitHub Issues GitHub Pull Requests GitHub Discussions GitHub Stars GitHub Forks GitHub Languages CodeFactor Grade LGTM Alerts LGTM Grade License

Release Latest (GitHub Latest Release Date) Pre (GitHub Latest Pre-Release Date)
GitHub GitHub Total Downloads GitHub Latest Release Version GitHub Latest Pre-Release Version
NPM NPM Total Downloads NPM Latest Release Version NPM Latest Pre-Release Version

📝 Description

A NodeJS module to provide a better and easier coalescing, similar to the function default parameter.

Although the nullish coalescing operator (??) is an improved operator from the OR operator (||), it is still not good enough due to it considers null is an undefined value, even though this is defined and/or as expected.

The conditional (ternary) operator (?:) maybe good:

(typeof a === "undefined") ? 1 : a;

But it is not that good when need to have many:

(typeof a === "undefined") ? (
  (typeof b === "undefined") ? (
    (typeof c === "undefined") ? (
      (typeof d === "undefined") ? (
        (typeof e === "undefined") ? 1 : e
      ) : d
    ) : c
  ) : b
) : a;

Much cleaner with Undefinish:

undefinish(a, b, c, d, e, 1);

📚 Documentation

Getting Started

Install

NodeJS (>= v6.9.0) + NPM (>= v3.10.8):

npm install @hugoalh/undefinish

Use In CommonJS

const undefinish = require("@hugoalh/undefinish");

Use In ModuleJS

import undefinish from "@hugoalh/undefinish";

API

undefinish(
  ...inputs: any[]
): any

Example

let input = {
  displayName: null,
  age: 8
};

input.username ?? input.name ?? input.displayName ?? "owl";
//=> "owl"

undefinish(input.username, input.name, input.displayName, "owl");
//=> null