@zcabjro/option
TypeScript icon, indicating that this package has built-in type declarations

0.4.2 • Public • Published

@zcabjro/option

Summary

Represents optional values by extending the notion of a nullable type with methods for operating on the underlying value (if any).

Instances of Option are either an instance of Some or None.

Some represents a defined value while None represents the absence of one.

Inspired by Scala's Option type.

Installation

npm install @zcabjro/option

Overview

Property Some None
get Get the underlying value undefined
isDefined true false
getOrElse Gets the underlying value Falls back to a given value
getOrElseLazy Gets the underlying value Falls back to a given lazily evaluated value
map Applies a function to the underlying value noop
flatMap Applies a function (that returns Option) to the underlying value noop
fold Applies a function to the underlying value and returns the result Falls back to a given value
foldLazy Applies a function to the underlying value and returns the result Falls back to a given lazily evaluated value

Helpers

Helper Summary
when Accepts a condition C and a value V, returning Some when C is true or None otherwise

Examples

get

Gets the underlying value when defined or throws.

some("Alice").get // "Alice"
none.get          // undefined

isDefined

Returns true for Some and false for None.

some("Alice").isDefined // true
none.isDefined          // false

getOrElse

Gets the underlying value when defined or falls back to a given default value.

some("Alice").getOrElse("Bob") // "Alice"
none.getOrElse("Bob")          // "Bob"

getOrElseLazy

Gets the underlying value when defined or falls back to a given default, lazyily evaluated value.

some("Alice").getOrElseLazy(() => "Bob") // "Alice"
none.getOrElseLazy(() => "Bob")          // "Bob"

map

Applies the given function to the underlying value when defined, returning a new Option with the result.

some("Alice").map(s => s.length) // Some(5)
none.map(noop)                   // None

flatMap

Applies the given function to the underlying value when defined, returning the result.

some("Alice").flatMap(s => some(s.length)) // Some(5)
some("Alice").flatMap(() => none)          // None
none.flatMap(() => some("not executed"))   // None
none.flatMap(() => none)                   // None

fold

Applies the given function to the underlying value when defined, returning the result.

Falls back to a given default value otherwise.

some("Alice").fold(0)(s => s.length) // 5
none.fold(0)(() => 5)                // 0

foldLazy

Applies the given function to the underlying value when defined, returning the result.

Falls back to a given default, lazily evaluated value otherwise.

some("Alice").foldLazy(() => 0)(s => s.length) // 5
none.foldLazy(() => 0)(() => 5)                // 0

when

Returns Some when the given condition is true. Otherwise it returns None.

when(true, () => "Alice")  // Some("Alice")
when(false, () => "Alice") // None

Readme

Keywords

Package Sidebar

Install

npm i @zcabjro/option

Weekly Downloads

0

Version

0.4.2

License

ISC

Unpacked Size

10.6 kB

Total Files

6

Last publish

Collaborators

  • zcabjro