new Right()
Extends
Methods
-
staticRight.from(value){Either}
-
Creates a new
Rightfrom avalue. If thevalueis already aEitherinstance, thevalueis returned unchanged. Otherwise, a newRightis made with thevalue.Name Type Description value* Value to wrap in a Right.Returns:
Type Description Either Eitherwhen is thevaluealready wrapped orRightwrappedvalue.Examples
Right from nothing
Right.from(); // => Right()Right from arbitrary value
Right.from(true); // => Right(true)Right from another Right
Right.from(Right.from(value)); // => Right(value)Right from Left
Right.from(Left.from(error)); // => Left(error) -
Applies the function contained in the instance of a
Rightto the value contained in the providedRight, producing aRightcontaining the result. If the instance is aLeft, the result is theLeftinstance. If the instance is aRightand the providedEitherisLeft, the result is the providedLeft.Name Type Description otherEither Value to apply to the function wrapped in the Right.Returns:
Type Description Either Rightwrapped applied function orLeft.Example
Right#ap
const findPerson = curryN(3, Person.find); // Person.find(name, birthdate, address) Right.from(findPerson) // => Right(findPerson) .ap(Right.try(getName())) // => Right(name) .ap(Right.try(getBirthdate())) // => Right(birthdate) .ap(Right.try(getAddress())) // => Right(address) .ifRight(console.log); // => Log Person.find() response -
Transforms a
Eitherby applying the first function to the contained value for aLeftor the second function for aRight. The result of each map is wrapped in the corresponding type.Name Type Description failureMapfunction Map to apply to the Left.successMapfunction Map to apply to the Right.Returns:
Type Description Either Eitherwrapped value mapped with the corresponding mapping function.Example
// Using lodash/fp/get Either.try(loadFile) .bimap(get("message"), parseFile) // ... other actions in workflow -
Applies the provided function to the value contained for a
Right. The function should return the value wrapped in aEither. If the instance is aLeft, the function is ignored and then instance is returned unchanged.Name Type Description methodChain.<Either> The function to invoke with the value. Returns:
Type Description Either Eitherwrapped value returned by the providedmethod.Example
Right#chain
// Using lodash/fp/curry and getOr const getConfigOption = curry((path, config) => Either.Right.from(getOr( Either.Left.from(`Value not found at "${path}"`), path, config ))); Either.of(config) .chain(getConfigOption("path.to.option")) -
inherited equals(other){Boolean}
-
Determines whether or not the
otheris equal in value to the current (this). This is not a reference check.Name Type Description other* Other value to check. Returns:
Type Description Boolean trueif the two Eithers are equal;falseif not equal.Examples
Reflexivity
v1.equals(v1) === true; // => trueSymmetry
v1.equals(v2) === v2.equals(v1); // => trueTransitivity
(v1.equals(v2) === v2.equals(v3)) && v1.equals(v3) // => true -
Extends the Either. This is used for workflow continuation where the context has shifted.
Type Description Extend.<Either> method - The function to invoke with the value. Returns:
Type Description Either Example
Workflow continuation
// Workflow from makeRequest.js const makeRequest = requestOptions => requestAsPromise(requestOptions) .then(Right.from) .catch(Left.from); // Workflow from savePerson.js const savePerson = curry((requestOptions, eitherPerson) => eitherPerson .map(Person.from) .map(person => set("body", person, requestOptions)) .map(makeRequest) ); // Workflow from processResponse.js const processResponse = eitherResponse => eitherResponse .ifLeft(console.error) .ifRight(console.log); Either.of(person) .extend(savePerson({ method: "POST" })) .extend(processResponse); -
inherited get(){*}
-
Returns the value if the instance is a
Rightotherwise thenull.Returns:
Type Description * Examples
Right#get
Right.from(value).get(); // => valueLeft#get
Left.from(error).get(); // => null -
Applies the provided function to the value contain for a
Left. Any return value from the function is ignored. If the instance is aRight, the function is ignored and the instance is returned.Name Type Description methodConsumer The function to invoke with the value. Returns:
Type Description Either Current instance. Examples
Right#ifLeft
Right.from(value).ifLeft(doSomething); // void // => Right(value)Left#ifLeft
Left.from(error).ifLeft(doSomething); // doSomething(error) // => Left(error) -
Applies the provided function to the value contain for a
Right. Any return value from the function is ignored. If the instance is aLeft, the function is ignored and the instance is returned.Name Type Description methodConsumer The function to invoke with the value. Returns:
Type Description Either Current instance. Examples
Right#ifRight
Right.from(value).ifRight(doSomething); // doSomething(value) // => Right(value)Left#ifRight
Left.from(error).ifRight(doSomething); // void // => Left(error) -
inherited isLeft(){Boolean}
-
Determines whether or not the instance is a
Left.Returns:
Type Description Boolean trueif the instance is aLeft;falseis not.Examples
Right#isLeft
Right.from(value).isLeft(); // => falseLeft#isLeft
Left.from(error).isLeft(); // => true -
inherited isRight(){Boolean}
-
Determines whether or not the instance is a
Right.Returns:
Type Description Boolean trueif the instance is aRight;falseis not.Examples
Right
Right.from(value).isLeft(); // => trueLeft#isRight
Left.from(error).isLeft(); // => false -
Applies the provided function to the value contained for a
Rightwhich is, in turn, wrapped in aRight. If the instance is aLeft, the function is ignored and then instance is returned unchanged.Name Type Description methodfunction The function to invoke with the value. Returns:
Type Description Either Eitherwrapped value mapped with the providedmethod.Example
// Using lodash/fp/flow and sort Right.from([1, 3, 2]).map(flow(sort, join(", "))); // => Right("1, 2, 3") Left.from(error).map(flow(sort, join(", "))); // => Left(error) -
inherited of()
-
- See:
-
inherited abstractorElse(method){*}
-
Returns the value if the instance is a
Rightotherwise returns the value supplied if the instance is aLeft.Name Type Description methodConsumer The function to invoke with the value. Returns:
Type Description * Examples
Right#orElse
Right.from(value).orElse(otherValue); // => valueLeft#orElse
Left.from(error).orElse(otherValue); // => otherValue -
inherited abstractorElseGet(method){*}
-
Return the value if the instance is a
Rightotherwise returns the value from the function provided.Name Type Description methodSupplier The function supplying the optional value. Returns:
Type Description * Examples
Right#orElseGet
Right.from(value).orElseGet(getOtherValue); // => valueLeft#orElseGet
Left.from(error).orElse(getOtherValue); // => otherValue -
inherited abstractorElseThrow(method){*}
-
Returns the value if the instance is a
Rightotheriwse throws theErrorsupplied by the function provided. The function receives the value of theLeftas its argument.Name Type Description methodfunction The function to invoke with the value. Throws:
-
returned by the provided function.
- Type
- Error
Returns:
Type Description * Examples
Right#orElseThrow
Right.from(value).orElseThrow(createException); // => valueLeft#orElseThrow
Left.from(error).orElseThrow(createException); // throw createException(error) -
-
Name Type Description maybeMaybe Maybe implementation. Returns:
Type Description Maybe Maybewrappedvalue.Examples
Right#toMaybe
Right.from(value).toMaybe(Maybe); // => Maybe.Just(value);Left#toMaybe
Left.from(error).toMaybe(Maybe); // => Maybe.Nothing(); -
inherited abstracttoPromise(promise){Promise}
-
Converts the Either to a
Promiseusing the providedPromiseimplementation.Name Type Description promisePromise Promise implementation. Returns:
Type Description Promise Promisewrappedvalue.Examples
Right#toPromise
const Bluebird = require("bluebird"); Right.from(value).toPromise(Bluebird); // => Promise.resolve(value);Left#toPromise
const Bluebird = require("bluebird"); Left.from(error).toPromise(Bluebird); // => Promise.reject(error); -
inherited abstracttoString(){String}
-
Returns a
Stringrepresentation of theEither.Returns:
Type Description String Stringrepresentation.Examples
Right#toString
Right.from(1).toString(); // => "Either.Right(1)"Left#toString
Left.from(error).toString(); // => "Either.Left(error)" -
inherited abstracttoValidation(validation){Validation}
-
Name Type Description validationValidation Validation implementation. Returns:
Type Description Validation Validationwrappedvalue.Examples
Right#toValidation
Right.from(value).toValidation(Validation); // => Validation.Success(value);Left#toValidation
Left.from(error).toValidation(Validation); // => Validation.Failure();