<A extends Array<unknown>, B>(f: (...a: A) => B): (
...a: A
) => Array<NonNullable<B>>Lifts a nullable-returning function into one that returns an array:
null/undefined becomes [], anything else becomes [value].
Example (Lifting a nullable function)
import { Array } from "effect"
const parseNumber = Array.liftNullishOr((s: string) => {
const n = Number(s)
return isNaN(n) ? null : n
})
console.log(parseNumber("123")) // [123]
console.log(parseNumber("abc")) // []Source effect/Array.ts:40434 lines
export const const liftNullishOr: <
A extends Array<unknown>,
B
>(
f: (...a: A) => B
) => (...a: A) => Array<NonNullable<B>>
Lifts a nullable-returning function into one that returns an array:
null/undefined becomes [], anything else becomes [value].
Example (Lifting a nullable function)
import { Array } from "effect"
const parseNumber = Array.liftNullishOr((s: string) => {
const n = Number(s)
return isNaN(n) ? null : n
})
console.log(parseNumber("123")) // [123]
console.log(parseNumber("abc")) // []
liftNullishOr = <function (type parameter) A in <A extends Array<unknown>, B>(f: (...a: A) => B): (...a: A) => Array<NonNullable<B>>A extends interface Array<T>Array<unknown>, function (type parameter) B in <A extends Array<unknown>, B>(f: (...a: A) => B): (...a: A) => Array<NonNullable<B>>B>(
f: (...a: A) => Bf: (...a: A extends Array<unknown>a: function (type parameter) A in <A extends Array<unknown>, B>(f: (...a: A) => B): (...a: A) => Array<NonNullable<B>>A) => function (type parameter) B in <A extends Array<unknown>, B>(f: (...a: A) => B): (...a: A) => Array<NonNullable<B>>B
): (...a: A extends Array<unknown>a: function (type parameter) A in <A extends Array<unknown>, B>(f: (...a: A) => B): (...a: A) => Array<NonNullable<B>>A) => interface Array<T>Array<type NonNullable<T> = T & {}Exclude null and undefined from T
NonNullable<function (type parameter) B in <A extends Array<unknown>, B>(f: (...a: A) => B): (...a: A) => Array<NonNullable<B>>B>> =>
(...a: A extends Array<unknown>a) => const fromNullishOr: <B>(
a: B
) => NonNullable<B>[]
Converts a nullable value to an array: null/undefined becomes [],
anything else becomes [value].
When to use
Use to treat a nullable single value as zero or one array element.
Example (Converting nullable values to an array)
import { Array } from "effect"
console.log(Array.fromNullishOr(1)) // [1]
console.log(Array.fromNullishOr(null)) // []
console.log(Array.fromNullishOr(undefined)) // []
fromNullishOr(f: (...a: A) => Bf(...a: A extends Array<unknown>a))