@zcabjro/option
v0.4.2
Published
Option type
Readme
@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/optionOverview
| 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 // undefinedisDefined
Returns true for Some and false for None.
some("Alice").isDefined // true
none.isDefined // falsegetOrElse
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) // NoneflatMap
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) // Nonefold
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) // 0foldLazy
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) // 0when
Returns Some when the given condition is true. Otherwise it returns None.
when(true, () => "Alice") // Some("Alice")
when(false, () => "Alice") // None