Nest.JS | Mônadas -> Talvez
A mônada Maybe, também conhecida como mônada Option, é uma mônada usada para representar cálculos que podem ou não ter um valor. Normalmente é usado para lidar com a possibilidade de valores nulos ou indefinidos de maneira funcional e combinável.
A mônada Maybe é normalmente implementada como um objeto que possui dois subtipos: Juste Nothing. O Justsubtipo contém um valor, enquanto o Nothingsubtipo representa a ausência de um valor.
Aqui está um exemplo da mônada Maybe em 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 exemplo, você pode criar um Justque envolva um número e, em seguida, usar o mapmétodo para incrementar esse número, você pode encadear vários deles Juste Nothingjuntos para criar uma computação mais complexa, sem ter que verificar manualmente a presença de um valor em cada etapa.
No Nest.js, o Maybe Monad é um Monad que envolve um valor e fornece um conjunto de métodos para trabalhar com esse valor de maneira funcional, ao mesmo tempo em que lida com a possibilidade de o valor ser nulo ou indefinido.
Aqui está um exemplo de como você pode usar o Maybe Monad no 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 extrair o valor agrupado, você pode usar o .getOrElse()método e fornecer um valor padrão para retornar se o valor agrupado fornone
console.log(myService.findUserById(1).getOrElse(new User()))
Você também pode usar a .map()função para transformar o valor agrupado, se ele existir, e .chain()a função para encadear vários cálculos talvez.
É importante observar que este exemplo é básico e não demonstra todo o poder das Mônadas na programação funcional. As mônadas podem ser usadas para lidar com vários casos, como tratamento de erros, encadeamento de vários cálculos e muito mais. É melhor entender o problema e os casos de uso antes de aplicar as mônadas.
Lista de peças:





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)