Forget about null, use undefined

This commit is contained in:
Jon Staab
2025-11-06 12:10:24 -08:00
parent d04284cde8
commit 4c1c138329
+7 -9
View File
@@ -1,18 +1,16 @@
import {bech32, utf8} from "@scure/base" import {bech32, utf8} from "@scure/base"
type Obj<T = any> = Record<string, T> export type Obj<T = any> = Record<string, T>
// ---------------------------------------------------------------------------- export type Maybe<T> = T | undefined
// Working with nil
// ----------------------------------------------------------------------------
export type Nil = null | undefined export type MaybeAsync<T> = T | Promise<T>
export const isNil = <T>(x: T, ...args: unknown[]) => x === undefined || x === null export const isDefined = <T>(x: T, ...args: unknown[]) => x !== undefined
export const isNotNil = <T>(x: T, ...args: unknown[]) => x !== undefined && x !== null export const isUndefined = <T>(x: T, ...args: unknown[]) => x === undefined
export const assertNotNil = <T>(x: T, ...args: unknown[]) => x! export const assertDefined = <T>(x: T, ...args: unknown[]) => x!
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
// Working with types // Working with types
@@ -778,7 +776,7 @@ export const toIterable = (x: any) => (isIterable(x) ? x : [x])
export const ensurePlural = <T>(x: T | T[]) => (x instanceof Array ? x : [x]) export const ensurePlural = <T>(x: T | T[]) => (x instanceof Array ? x : [x])
/** Ensures values are not undefined */ /** Ensures values are not undefined */
export const removeNil = <T>(xs: T[]) => xs.filter(isNotNil).map(assertNotNil) export const removeNil = <T>(xs: T[]) => xs.filter(isDefined).map(assertDefined)
/** Returns a list of overlapping pairs of elements in xs */ /** Returns a list of overlapping pairs of elements in xs */
export const overlappingPairs = <T>(xs: T[]): T[][] => { export const overlappingPairs = <T>(xs: T[]): T[][] => {