Nido.JS | Mónadas -> Cualquiera
La Eithermónada, también conocida como Resultmónada, es una mónada que se utiliza para representar cálculos que pueden tener uno de dos posibles resultados: un valor de tipo Lefto un valor de tipo Right. El Lefttipo se usa típicamente para representar un error o falla, mientras que el Righttipo se usa para representar un cálculo exitoso.
La Eithermónada normalmente se implementa como un objeto que tiene dos subtipos: Lefty Right. El Leftsubtipo contiene un valor de error, mientras que el Rightsubtipo contiene un valor correcto.
Aquí hay un ejemplo de la Eithermónada en JavaScript:
class Left {
constructor(value) {
this.value = value;
}
map(f) {
return this;
}
chain(f) {
return this;
}
getOrElse(defaultValue) {
return defaultValue;
}
}
class Right {
constructor(value) {
this.value = value;
}
map(f) {
return new Right(f(this.value));
}
chain(f) {
return f(this.value);
}
getOrElse(defaultValue) {
return this.value;
}
}
Por ejemplo, podría crear uno Rightque envuelva un número y luego usar el mapmétodo para incrementar ese número, o podría crear uno Leftque envuelva un mensaje de error y luego usar el getOrElsemétodo para manejar el error. Luego, puede encadenar varios de estos Righty Leftjuntos para crear un cálculo más complejo, sin tener que verificar manualmente la presencia de un valor o un error en cada paso.
En Nest.js, EitherMonad es una Monad que le permite manejar errores y devolver valores de manera funcional. Se puede utilizar para representar el resultado de un cálculo que puede ser un éxito (un valor de la derecha) o un fracaso (un valor de la izquierda).
Aquí hay un ejemplo de cómo podría usar EitherMonad en Nest.js:
import { Injectable } from '@nestjs/common';
import { Either, left, right } from 'fp-ts/lib/Either';
@Injectable()
export class MyService {
public findUserById(id: number): Either<Error, User> {
const user = findUserInDB(id);
if (user) {
return right(user);
} else {
return left(new Error('User not found'));
}
}
}
Puede usar el .fold()método para adjuntar una función de devolución de llamada que se invocará con el valor de EitherMonad.
myService.findUserById(1)
.fold(error => console.log(error), user => console.log(user))
Es importante tener en cuenta que este ejemplo es básico y no demuestra todo el poder de Monads en la programación funcional. Las mónadas se pueden usar para manejar varios casos, como el manejo de errores, el encadenamiento de múltiples cálculos y más. Es mejor comprender el problema y los casos de uso antes de aplicar las mónadas.
Lista de piezas:

![¿Qué es una lista vinculada, de todos modos? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































