0.4.2 • Published 4 years ago

@zcabjro/option v0.4.2

Weekly downloads
-
License
ISC
Repository
gitlab
Last release
4 years ago

@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

PropertySomeNone
getGet the underlying valueundefined
isDefinedtruefalse
getOrElseGets the underlying valueFalls back to a given value
getOrElseLazyGets the underlying valueFalls back to a given lazily evaluated value
mapApplies a function to the underlying valuenoop
flatMapApplies a function (that returns Option) to the underlying valuenoop
foldApplies a function to the underlying value and returns the resultFalls back to a given value
foldLazyApplies a function to the underlying value and returns the resultFalls back to a given lazily evaluated value

Helpers

HelperSummary
whenAccepts 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
0.4.2

4 years ago

0.4.1

4 years ago

0.4.0

4 years ago

0.2.3

5 years ago

0.2.1

5 years ago

0.2.2

5 years ago

0.2.0

5 years ago

0.1.0

5 years ago