An implementation of the option type, sometimes known as the maybe type.
An instance of an option type is an optional value. Either it's none
, or an
instance of Some
:
var option = require("option");
var some = option.some("Bob");
var none = option.none;
A function that returns an optional string isn't that different from a function
that returns a string or null
. The advantage over null is that options
provide a number of functions that help with manipulating optional values.
function greet(user) {
return "Hello " + user.name().valueOrElse("Anonymous");
}
some(value).isNone()
returnsfalse
some(value).isSome()
returnstrue
none.isNone()
returnstrue
none.isSome()
returnsfalse
some(value).value()
returnsvalue
none.value()
throws an error
some(value).map(func)
returnssome(func(value))
none.map(func)
returnsnone
Conventionally used when func
returns another option.
some(value).flatMap(func)
returnsfunc(value)
none.flatMap(func)
returnsnone
some(value).filter(predicate)
returns:some(value)
ifpredicate(value) === true
none
ifpredicate(value) === false
none.filter(predicate)
returnsnone
some(value).toArray()
returns[some]
none.toArray()
returns[]
If other
is a function (other
conventionally returning another option):
some(value).orElse(other)
returnssome(value)
none.orElse(other)
returnsother()
If other
is not a function (other
conventionally being another option):
some(value).orElse(other)
returnssome(value)
none.orElse(other)
returnsother
If other
is a function:
some(value).valueOrElse(other)
returnsvalue
none.valueOrElse(other)
returnsother()
If other
is not a function:
some(value).valueOrElse(other)
returnsvalue
none.valueOrElse(other)
returnsother
choices
is an object of shape { Some: function, None: function }
.
some(value).matchWith({ Some: funcA, None: funcB })
returns the result offuncA(value)
none.matchWith({ Some: funcA, None: funcB })
returns the result offuncB()
option.isOption(value)
returnstrue
ifvalue
isoption.none
oroption.some(x)
.
- If
value
isnull
orundefined
,option.fromNullable(value)
returnsoption.none
. - Otherwise, returns
option.some(value)
. For instance,option.fromNullable(5)
returnsoption.some(5)
.
npm install option