@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