Nido.JS | Mónadas -> Quizás
La mónada Maybe, también conocida como mónada Option, es una mónada que se utiliza para representar cálculos que pueden o no tener un valor. Por lo general, se usa para manejar la posibilidad de valores nulos o indefinidos de una manera funcional y componible.
La mónada Maybe normalmente se implementa como un objeto que tiene dos subtipos: Justy Nothing. El Justsubtipo contiene un valor, mientras que el Nothingsubtipo representa la ausencia de un valor.
Aquí hay un ejemplo de la mónada Maybe en JavaScript:
class Just {
constructor(value) {
this.value = value;
}
map(f) {
return new Just(f(this.value));
}
chain(f) {
return f(this.value);
}
getOrElse(defaultValue) {
return this.value;
}
}
class Nothing {
map(f) {
return this;
}
chain(f) {
return this;
}
getOrElse(defaultValue) {
return defaultValue;
}
}
Por ejemplo, podría crear uno Justque envuelva un número y luego usar el mapmétodo para incrementar ese número, luego podría encadenar varios de estos Justy Nothingjuntos para crear un cálculo más complejo, sin tener que verificar manualmente la presencia de un valor en cada uno. paso.
En Nest.js, Maybe Monad es una mónada que envuelve un valor y proporciona un conjunto de métodos para trabajar con ese valor de manera funcional, al mismo tiempo que maneja la posibilidad de que el valor sea nulo o indefinido.
Aquí hay un ejemplo de cómo podría usar Maybe Monad en Nest.js:
import { Injectable } from '@nestjs/common';
import { Maybe, some, none } from 'fp-ts/lib/Maybe';
@Injectable()
export class MyService {
public findUserById(id: number): Maybe<User> {
const user = findUserInDB(id);
return user ? some(user) : none;
}
}
Para extraer el valor envuelto, puede usar el .getOrElse()método y proporcionar un valor predeterminado para devolver si el valor envuelto esnone
console.log(myService.findUserById(1).getOrElse(new User()))
También puede usar la .map()función para transformar el valor envuelto si existe, y .chain()la función para encadenar múltiples cálculos quizás.
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)



































