Options
All
  • Public
  • Public/Protected
  • All
Menu

Class Opt<T>

Type parameters

  • T

    Wrapped value type.

Hierarchy

Index

Constructors

constructor

  • new Opt<T>(): Opt<T>
  • Type parameters

    • T

    Returns Opt<T>

Accessors

isEmpty

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

    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

Abstract bimap

  • bimap<U>(someF: (_: T) => U, noneF: () => U): Opt<U>
  • Similar to caseOf but doesn't unwrap value.

    some(1).bimap(x => x + 1, () => 0) // Some(2)
    none.bimap(x => x + 1, () => 0) // Some(0)
    

    Type parameters

    • U

    Parameters

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

          • _: T

          Returns U

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

    Returns Opt<U>

Abstract caseOf

  • caseOf<R>(onSome: (x: T) => R, onNone: () => R): R
  • Applies appropriate function and returns result from the function.

    some(1).caseOf(x => x + 1, () => 0) // 2
    none.caseOf(x => x + 1, () => 0) // 0
    

    Type parameters

    • R

    Parameters

    • onSome: (x: T) => R

      Processing function for Some.

        • (x: T): R
        • Parameters

          • x: T

          Returns R

    • onNone: () => R

      Processing function for None.

        • (): 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>

Abstract contains

  • contains(x: T): boolean
  • Compares inner value with given value using ===. Always false for None.

    some(1).contains(1) // true
    some(0).contains(1) // false
    none.contains(undefined) // false
    

    Parameters

    • x: T

    Returns boolean

Abstract equals

  • Is a value of this instance and given other instance the same? Default comparator function is === (referential equality).

    none.equals(none) // true
    some(1).equals(none) // false
    some(1).equals(some(1)) // true
    some(1).equals(some(2)) // false
    some({a: 1}).equals(some({a: 1})) // false (different objects)
    some(1).equals(some(2), (x, y) => true) // true (custom comparator function)
    
    const jsonCmp = <T>(a: T, b: T): boolean => JSON.stringify(a) === JSON.stringify(b);
    some({a: 1}).equals(some({a: 1}), jsonCmp) // true (comparing values converted to JSON)
    

    Parameters

    Returns boolean

Abstract exists

  • exists(p: (x: T) => boolean): boolean
  • Applies p to inner value and passes result. Always false for None.

    some(0).exists(x => x > 0) // false
    some(1).exists(x => x > 0) // true
    none.exists(x => x > 0) // false
    

    Parameters

    • p: (x: T) => boolean

      Predicate.

        • (x: T): boolean
        • Parameters

          • x: T

          Returns boolean

    Returns boolean

Abstract filter

  • filter(predicate: (_: T) => boolean): Opt<T>
  • Returns Some with same value if predicate holds, None otherwise.

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

    noneIf

    Parameters

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

          • _: T

          Returns boolean

    Returns Opt<T>

Abstract flatBimap

  • flatBimap<U>(someF: (_: T) => Opt<U>, noneF: () => Opt<U>): Opt<U>
  • Similar to bimap, but accepts functions returning Opt.

    some(1).flatBimap(x => some(x+1), () => some(0)) // Some(2)
    none.flatBimap(x => some(x+1), () => some(0)) // Some(0)
    some(5).flatBimap(x => none, () => some(0)) // None
    

    Type parameters

    • U

    Parameters

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

          • _: T

          Returns Opt<U>

    • noneF: () => Opt<U>

    Returns Opt<U>

Abstract flatMap

  • flatMap<U>(f: (_: T) => Opt<U>): Opt<U>
  • Similar to map, but function is expected to return Opt which will be returned. Useful for including steps which may fail or return no value.

    some(1).flatMap(x => x === 1 ? none : some(x + 1)) // None
    none.flatMap(x => some(1)) // None
    

    Type parameters

    • U

    Parameters

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

          • _: T

          Returns Opt<U>

    Returns Opt<U>

Abstract forAll

  • forAll(p: (x: T) => boolean): boolean
  • Applies p to inner value and passes result. Always true for None.

    some(0).forAll(x => x > 0) // false
    some(1).forAll(x => x > 0) // true
    none.forAll(x => x > 0) // true
    

    Parameters

    • p: (x: T) => boolean

      Predicate.

        • (x: T): boolean
        • Parameters

          • x: T

          Returns boolean

    Returns boolean

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>

Abstract map

  • map<U>(f: (_: T) => U): Opt<U>
  • Applies function to the wrapped value and returns a new instance of Some.

    some(1).map(x => x + 1) // Some(2)
    none.map(x => x + 1) // None
    

    Type parameters

    • U

    Parameters

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

          • _: T

          Returns U

    Returns Opt<U>

Abstract narrow

  • narrow<U>(guard: (value: any) => value is U): Opt<U>
  • Narrows type inside Opt using given type guard.

    some('1' as string | number).narrow(isString) // Some('1'): Opt<string>
    some(1 as string | number).narrow(isString) // None: Opt<string>
    

    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>

Abstract onNone

  • onNone(f: () => void): Opt<T>
  • Calls f on None, does nothing for Some.

    Parameters

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

    Returns Opt<T>

Abstract onSome

  • onSome(f: (x: T) => void): Opt<T>
  • Calls f on Some with its value, does nothing for None.

    Parameters

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

          • x: T

          Returns void

    Returns Opt<T>

Abstract optOrCrash

  • optOrCrash(msg: string): Opt<T>
  • Crash when called on None, pass Opt instance on Some.

    some(1).optOrCrash('fail') // Some(1)
    none.optOrCrash('fail') // throws
    
    deprecated

    Please use someOrCrash instead

    Parameters

    • msg: string

    Returns Opt<T>

Abstract orCrash

  • orCrash(msg: string): T
  • Returns value when Some, throws error with msg otherwise.

    Parameters

    • msg: string

      Error message.

    Returns T

Abstract orElse

  • orElse(def: T): T
  • Get inner value if Some, or use passed def value for None.

    some(1).orElse(2) // 1
    none.orElse(2) // 2
    

    Parameters

    • def: T

      Default value.

    Returns T

Abstract orElseOpt

  • orElseOpt(def: Opt<T>): Opt<T>
  • Return this for Some, def for None.

    some(1).orElseOpt(some(2)) // Some(1)
    none.orElseOpt(some(2)) // Some(2)
    none.orElseOpt(none) // None
    

    Parameters

    Returns Opt<T>

Abstract orFalse

  • orFalse(): false | T
  • Returns inner value for Some, false for None.

    some(1).orFalse() // 1
    none.orFalse() // false
    

    Returns false | T

Abstract orNaN

  • orNaN(): number | T
  • Returns inner value for Some, NaN for None.

    some(1).orNaN() // 1
    none.orNaN() // NaN
    

    Returns number | T

Abstract orNull

  • orNull(): null | T
  • Returns value for Some or null for None.

    some(1).orNull() // 1
    none.orNull() // null
    

    Returns null | T

Abstract orTrue

  • orTrue(): true | T
  • Returns inner value for Some, true for None.

    some(1).orTrue() // 1
    none.orTrue() // true
    

    Returns true | T

Abstract orUndef

  • orUndef(): undefined | T
  • Returns value for Some or undefined for None.

    some(1).orUndef() // 1
    none.orUndef() // undefined
    

    Returns undefined | T

pipe

  • pipe<R>(f: (x: Opt<T>) => R): R
  • Applies passed function to this instance and returns function result. Also known as a function application, |> or pipe operator.

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

    Type parameters

    • R

    Parameters

    • f: (x: Opt<T>) => R
        • (x: Opt<T>): R
        • Parameters

          Returns R

    Returns R

Abstract print

  • print(tag?: string): Opt<T>
  • Print value to console.

    opt(1).print() // logs 'Some:', '1'; returns Some(1)
    opt(1).print('test') // logs '[test]', 'Some:', '1'; returns Some(1)
    none.print('x') // logs '[x]', 'None'; returns None
    

    Parameters

    • Optional tag: string

    Returns Opt<T>

Abstract prop

  • prop<K>(key: K): Opt<NonNullable<T[K]>>
  • Maps property of a wrapped object.

    const a = {x: 1};
    const xValue = opt(a).prop('x').orCrash('missing prop x'); // 1
    

    Type parameters

    • K: string | number | symbol

    Parameters

    • key: K

    Returns Opt<NonNullable<T[K]>>

Abstract someOrCrash

  • someOrCrash(msg: string): Some<T>
  • Crash when called on None, pass Opt instance on Some.

    some(1).someOrCrash('fail') // Some(1)
    none.someOrCrash('fail') // throws
    

    Parameters

    • msg: string

    Returns Some<T>

Abstract toArray

  • toArray(): [] | [T]
  • Converts Opt to an array.

    some(1).toArray() // [1]
    none.toArray() // []
    

    Returns [] | [T]

Abstract toString

  • toString(): string
  • Formats Opt to string. In case of Some inner value is converted using JSON.stringify.

    some(1).toString() // 'Some(1)'
    none.toString() // 'None'
    

    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>

Abstract zip

  • zip<U>(other: Opt<U>): Opt<[T, U]>
  • Joins two optional values to a pair. If either of them is None then the result is None.

    some(1).zip(some(true)) // Some([1, true])
    some(1).zip(none) // None
    none.zip(some(1)) // None
    none.zip(none) // None
    

    Type parameters

    • U

    Parameters

    • other: Opt<U>

    Returns Opt<[T, U]>

Abstract zip3

  • zip3<X, Y>(x: Opt<X>, y: Opt<Y>): Opt<[T, X, Y]>
  • Same as zip, but with one more optional.

    some(1).zip3(some('a'), some(false)) // Some([1, 'a', false])
    none.zip3(some(1), some(2)) // None
    

    Type parameters

    • X

    • Y

    Parameters

    Returns Opt<[T, X, Y]>

Abstract zip4

  • zip4<X, Y, Z>(x: Opt<X>, y: Opt<Y>, z: Opt<Z>): Opt<[T, X, Y, Z]>
  • Same as zip3, but with one more optional.

    Type parameters

    • X

    • Y

    • Z

    Parameters

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

Abstract zip5

  • zip5<X, Y, Z, ZZ>(x: Opt<X>, y: Opt<Y>, z: Opt<Z>, zz: Opt<ZZ>): Opt<[T, X, Y, Z, ZZ]>
  • Same as zip4, but with one more optional.

    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