0.8.0 • Published 2 years ago

@zcabjro/either v0.8.0

Weekly downloads
7
License
ISC
Repository
gitlab
Last release
2 years ago

@zcabjro/either

Summary

Represents values that can be one of two possible types.

Instances of Either are either a Left or a Right.

Inspired by Scala's Either type.

Installation

npm install @zcabjro/either

Examples

value

Gets the underlying value from either Left or Right.

left("Alice").value // "Alice"
right("Bob").value  // "Bob"

getOrElse

Returns the underlying value from Right or the given fallback for Left.

left("Alice").getOrElse("Bob")  // "Bob"
right("Bob").getOrElse("Alice") // "Bob"

getOrElseLazy

Returns the underlying value from Right or the result of the given function for Left.

left("Alice").getOrElseLazy(() => "Bob")  // "Bob"
right("Bob").getOrElseLazy(() => "Alice") // "Bob"

getOrElseThrow

Returns the underlying value from Right or throws for Left. You may pass a function to control what gets thrown.

left("Alice").getOrElseThrow()                  // throw "Alice"
left("Alice").getOrElseThrow(a => new Error(a)) // throw new Error("Alice")
right("Bob").getOrElseThrow()                   // "Bob"
right("Bob").getOrElseThrow(a => new Error(a))  // "Bob"

isLeft

Returns true for Left and false for Right.

left("Alice").isLeft // true
right("Bob").isLeft  // false

isRight

Returns true for Right and false for Left.

left("Alice").isRight // false
right("Bob").isRight  // true

map

Applies the given function to a Right. Does nothing to a Left.

left("Alice").map(s => s.length)  // Left("Alice")
right("Alice").map(s => s.length) // Right(5)

flatMap

Similar to map except that the function passed to flatMap must return an Either. Calling flatMap on a Right will return the result of the given function. Does nothing to a Left.

left("Alice").flatMap(() => left(0))   // Left("Alice")
left("Alice").flatMap(() => right(1))  // Left("Alice")
right("Alice").flatMap(() => left(0))  // Left(0)
right("Alice").flatMap(() => right(1)) // Right(1)

fold

Receives two functions. The first is applied to a Left while the second is applied to a Right.

left("Alice").fold(() => 0, () => 1)   // 0
right("Alice").fold(() => 0, () => 1)  // 1

swap

Swap so that a Left becomes a Right or vice versa.

left("Alice").swap();  // Right("Alice")
right("Alice").swap(); // Left("Alice")
0.8.0

2 years ago

0.7.0

2 years ago

0.6.0

3 years ago

0.5.2

3 years ago

0.5.0

3 years ago

0.5.1

3 years ago

0.4.0

3 years ago

0.3.0

4 years ago

0.2.1

4 years ago

0.2.0

4 years ago

0.1.0

4 years ago