Options
All
  • Public
  • Public/Protected
  • All
Menu

Class None<T>

Empty Opt.

notexported
see

Opt

Type parameters

  • T

Hierarchy

Index

Constructors

constructor

  • new None<T>(): None<T>

Properties

Readonly @@type

@@type: symbol = ...

act

act: ActInClassFn<T> = ...

Similar to chain (in other languages called bind or >>=), but supports more functions passed at once (resembles do notation in Haskell). It is used to model a sequence of operations where each operation can fail (can return None).

// does addition when first argument is number
const f1 =
  (x: string | number) => (y: number) => opt(x).narrow(isNumber).map(z => z + y);
// passes only even numbers
const f2 = (x: number): Opt<number> => x % 2 === 0 ? opt(x) : none;

opt(0).act( // Some(0)
  f1(-2), // Some(-2)
  f2, // Some(-2)
  optNegative, // None
); // None

opt(0).act( // Some(0)
  f1(1), // Some(1)
  f2, // None
  optNegative, // won't get called, still None
); // None

opt(3).act( // Some(3)
  f1(1), // Some(4)
  f2, // Some(4)
  optNegative, // Some(4)
); // Some(4)
param

actToOpt

actToOpt: ActToOptInClassFn<T> = ...

Similar to act, but functions return empty values instead of Opt. It is useful for typical JavaScript functions (e.g. lodash), properly handles undefined/null/NaN at any point of the chain.

const data = [{}, {f: true, a: [{b: 7, c: 1}]}, {a: [{}]}];
opt(data).actToOpt(
  find(x => Boolean(x?.f)), // {f: true, a: [{b: 7, c: 1}]}
  x => x?.a, // [{b: 7, c: 1}]
  find(x => x.b === 8) // undefined
); // None
param

chainFlow

chainFlow: ActInClassFn<T> = ...

Alias of act

param

chainToOptFlow

chainToOptFlow: ActToOptInClassFn<T> = ...

Alias of actToOpt.

param

const

const: ConstInClassFn<T> = ...

Constructs a function which returns a value for Some or an empty value for None (default is null). Optionally takes an empty value as a parameter.

opt(1).const()() // 1
opt(undefined).const()() // null

// custom empty value
opt(NaN).const(undefined)() // undefined

mapFlow

mapFlow: MapFlowInClassFn<T> = ...

Similar to map, but supports more functions which are called in succession, each on a result of a previous one.

const sq = (x: number) => x * x;
const dec = (x: number) => x - 1;
opt(4).mapFlow(sq, dec) // Some(15)
opt(null).mapFlow(sq, dec) // None
param

pipe

pipe: PipeInClassFn<T> = ...

Applies passed function to this instance and returns function result. Also known as a reverse function application, |> (Reason/ReScript, F#, OCaml), & (Haskell), # (PureScript) or a pipe operator.

some(1).pipe(x => x.isEmpty) // false
none.pipe(x => x.isEmpty) // true

Supports multiple functions.

opt(1).pipe( // Some(1)
  x => x.isEmpty, // false
  x => !x, // true
) // true
param

Functions in call chain

Accessors

isEmpty

  • get isEmpty(): boolean
  • Returns boolean

length

  • get length(): number
  • 1 for Some, 0 for None.

    Returns number

nonEmpty

  • get nonEmpty(): boolean
  • false for Some, true for None.

    Returns boolean

Methods

at

  • at<R>(_index: number): Opt<R>
  • Type parameters

    • R: unknown

    Parameters

    • _index: number

    Returns Opt<R>

bimap

  • bimap<U>(_someF: (_: T) => U, noneF: () => U): Opt<U>
  • Type parameters

    • U

    Parameters

    • _someF: (_: T) => U
        • (_: T): U
        • Parameters

          • _: T

          Returns U

    • noneF: () => U
        • (): U
        • Returns U

    Returns Opt<U>

caseOf

  • caseOf<R>(_onSome: (x: T) => R, onNone: () => R): R
  • Type parameters

    • R

    Parameters

    • _onSome: (x: T) => R
        • (x: T): R
        • Parameters

          • x: T

          Returns R

    • onNone: () => R
        • (): R
        • Returns R

    Returns R

chain

  • chain<U>(f: (_: T) => Opt<U>): Opt<U>
  • Alias of flatMap

    Type parameters

    • U

    Parameters

    • f: (_: T) => Opt<U>
        • (_: T): Opt<U>
        • Parameters

          • _: T

          Returns Opt<U>

    Returns Opt<U>

chainToOpt

  • chainToOpt<U>(f: (_: T) => undefined | null | U): Opt<U>
  • Combination of flatMap and opt functions.

    some(1).chainToOpt(x => x === 1 ? null : x + 1) // None
    some(2).chainToOpt(x => x === 1 ? null : x + 1) // Some(3)
    

    Type parameters

    • U

    Parameters

    • f: (_: T) => undefined | null | U
        • (_: T): undefined | null | U
        • Parameters

          • _: T

          Returns undefined | null | U

    Returns Opt<U>

contains

  • contains(_x: T): boolean
  • Parameters

    • _x: T

    Returns boolean

equals

exists

  • exists(_p: (x: T) => boolean): boolean
  • Parameters

    • _p: (x: T) => boolean
        • (x: T): boolean
        • Parameters

          • x: T

          Returns boolean

    Returns boolean

filter

  • filter(_predicate: (_: T) => boolean): Opt<T>
  • Parameters

    • _predicate: (_: T) => boolean
        • (_: T): boolean
        • Parameters

          • _: T

          Returns boolean

    Returns Opt<T>

flatBimap

  • flatBimap<U>(_someF: (_: T) => Opt<U>, noneF: () => Opt<U>): Opt<U>
  • Type parameters

    • U

    Parameters

    • _someF: (_: T) => Opt<U>
        • (_: T): Opt<U>
        • Parameters

          • _: T

          Returns Opt<U>

    • noneF: () => Opt<U>

    Returns Opt<U>

flatMap

  • flatMap<U>(_f: (_: T) => Opt<U>): Opt<U>
  • Type parameters

    • U

    Parameters

    • _f: (_: T) => Opt<U>
        • (_: T): Opt<U>
        • Parameters

          • _: T

          Returns Opt<U>

    Returns Opt<U>

forAll

  • forAll(_p: (x: T) => boolean): boolean
  • Parameters

    • _p: (x: T) => boolean
        • (x: T): boolean
        • Parameters

          • x: T

          Returns boolean

    Returns boolean

head

  • head<R>(): Opt<R>
  • Get a first item of an array.

    example
    opt([1, 2, 3]).head() // Some(1)
    opt([]).head() // None
    opt(null).head() // None
    

    Type parameters

    • R: unknown

    Returns Opt<R>

isNone

  • isNone(): this is None<T>
  • Is this instance of None?

    Returns this is None<T>

isSome

  • isSome(): this is Some<T>
  • Is this instance of Some?

    Returns this is Some<T>

last

  • last<R>(): Opt<R>
  • Get a last item of an array.

    example
    opt([1, 2, 3]).last() // Some(3)
    opt([]).last() // None
    opt(null).last() // None
    

    Type parameters

    • R: unknown

    Returns Opt<R>

map

  • map<U>(): Opt<U>
  • Type parameters

    • U

    Returns Opt<U>

narrow

  • narrow<U>(_guard: (value: any) => value is U): Opt<U>
  • Type parameters

    • U

    Parameters

    • _guard: (value: any) => value is U
        • (value: any): value is U
        • Parameters

          • value: any

          Returns value is U

    Returns Opt<U>

noneIf

  • noneIf(predicate: (_: T) => boolean): Opt<T>
  • Returns None if predicate holds, otherwise passes same instance of Opt.

    opt(1).noneIf(x => x > 0); // None
    opt(-1).noneIf(x => x > 0); // Some(-1)
    
    see

    filter

    Parameters

    • predicate: (_: T) => boolean
        • (_: T): boolean
        • Parameters

          • _: T

          Returns boolean

    Returns Opt<T>

onNone

  • onNone(f: () => void): Opt<T>
  • Parameters

    • f: () => void
        • (): void
        • Returns void

    Returns Opt<T>

onSome

  • onSome(_f: (x: T) => void): Opt<T>
  • Parameters

    • _f: (x: T) => void
        • (x: T): void
        • Parameters

          • x: T

          Returns void

    Returns Opt<T>

optOrCrash

  • optOrCrash(msg: string): Opt<T>

orCrash

  • orCrash(msg: string): T
  • Parameters

    • msg: string

    Returns T

orElse

  • orElse(def: T): T
  • Parameters

    • def: T

    Returns T

orElseOpt

  • orElseOpt(def: Opt<T>): Opt<T>

orFalse

  • orFalse(): false | T
  • Returns false | T

orNaN

  • orNaN(): number | T
  • Returns number | T

orNull

  • orNull(): null | T
  • Returns null | T

orTrue

  • orTrue(): true | T
  • Returns true | T

orUndef

  • orUndef(): undefined | T
  • Returns undefined | T

print

  • print(tag?: string): Opt<T>
  • Parameters

    • Optional tag: string

    Returns Opt<T>

prop

  • prop<K>(_key: K): Opt<NonNullable<T[K]>>
  • Type parameters

    • K: string | number | symbol

    Parameters

    • _key: K

    Returns Opt<NonNullable<T[K]>>

someOrCrash

  • someOrCrash(msg: string): Some<T>

swap

  • swap<U>(_newVal: U): Opt<U>
  • Type parameters

    • U

    Parameters

    • _newVal: U

    Returns Opt<U>

toArray

  • toArray(): [] | [T]
  • Returns [] | [T]

toString

  • toString(): string
  • Returns string

widen

  • widen<U, R>(): Opt<R>
  • Widen union (typically union of strings to string). Experimental. May be removed if it is later found out it's unsafe and unfixable.

    opt(someValueOfUnionType).widen<SuperOfThatUnion>() // :Opt<SuperOfThatUnion>
    

    Type parameters

    • U

    • R = SuperUnionOf<U, T>

    Returns Opt<R>

zip

  • zip<U>(_other: Opt<U>): Opt<[T, U]>
  • Type parameters

    • U

    Parameters

    • _other: Opt<U>

    Returns Opt<[T, U]>

zip3

  • zip3<X, Y>(_x: Opt<X>, _y: Opt<Y>): Opt<[T, X, Y]>
  • Type parameters

    • X

    • Y

    Parameters

    Returns Opt<[T, X, Y]>

zip4

  • zip4<X, Y, Z>(_x: Opt<X>, _y: Opt<Y>, _z: Opt<Z>): Opt<[T, X, Y, Z]>
  • Type parameters

    • X

    • Y

    • Z

    Parameters

    Returns Opt<[T, X, Y, Z]>

zip5

  • zip5<X, Y, Z, ZZ>(_x: Opt<X>, _y: Opt<Y>, _z: Opt<Z>, _zz: Opt<ZZ>): Opt<[T, X, Y, Z, ZZ]>
  • Type parameters

    • X

    • Y

    • Z

    • ZZ

    Parameters

    Returns Opt<[T, X, Y, Z, ZZ]>

Static fromArray

  • fromArray<T>(x: [] | [T]): Opt<T>
  • Create Opt instance from an array of one or zero items.

    Opt.fromArray([]) // None
    Opt.fromArray([1]) // Some(1)
    

    Type parameters

    • T

    Parameters

    • x: [] | [T]

    Returns Opt<T>

Generated using TypeDoc