Nest.JS | Monads -> อาจจะ -> ทำ
เป็นวิธีการจากโรงงานที่ใช้ค่าภายในและรวมเข้ากับอินสแตนซ์ Monad ที่เหมาะสม วิธี นี้makeมักใช้เป็นทางเลือกแทนตัวสร้างเพื่อสร้างอินสแตนซ์ monad โดยทั่วไปจะใช้เพื่อสร้าง monads ในรูปแบบที่เรียบเรียงได้มากขึ้น และสามารถใช้เพื่อเพิ่มตรรกะหรือลักษณะการทำงานเพิ่มเติมให้กับอินสแตนซ์ monad รวมถึงป้องกันรหัสไคลเอนต์จากการสร้างอินสแตนซ์ของ monads ที่มีค่าภายในที่ไม่ถูกต้อง
นี่คือตัวอย่างเมธอดmakeที่สร้าง Maybe monad ใน JavaScript:
class Maybe {
static make(value) {
if (value === null || value === undefined) {
return new Nothing();
} else {
return new Just(value);
}
}
// ...
}
const maybeNumber = Maybe.make(2); // Just(2)
const nothing = Maybe.make(null); // Nothing
ใน Nest.js makeเมธอดนี้เป็นฟังก์ชันตัวช่วยที่สามารถใช้สร้างอินสแตนซ์ใหม่ของ Monad เมธอดmakeรับค่าและส่งคืนอินสแตนซ์ใหม่ของ Monad
ต่อไปนี้คือตัวอย่างวิธีที่คุณสามารถใช้makeเมธอดนี้เพื่อสร้างอินสแตนซ์ใหม่ของ Maybe Monad ใน Nest.js:
import { Injectable } from '@nestjs/common';
import { Maybe, make } from 'fp-ts/lib/Maybe';
@Injectable()
export class MyService {
public findUserById(id: number): Maybe<User> {
const user = findUserInDB(id);
return make(user);
}
}
make(user)จะส่งคืนsome(user)หากuserไม่เป็นโมฆะหรือไม่ได้กำหนด มิฉะนั้นจะส่งnoneคืน
คุณยังสามารถใช้.map()ฟังก์ชันเพื่อแปลงค่าที่ห่อไว้หากมีอยู่ และ.chain()ฟังก์ชันเพื่อเชื่อมโยงการคำนวณหลายรายการเข้าด้วยกัน
สิ่งสำคัญคือต้องสังเกตว่าตัวอย่างนี้เป็นเพียงตัวอย่างพื้นฐานและไม่ได้แสดงให้เห็นถึงพลังทั้งหมดของ Monads ในการเขียนโปรแกรมเชิงฟังก์ชัน Monads สามารถใช้เพื่อจัดการกรณีต่างๆ เช่น การจัดการข้อผิดพลาด การผูกมัดการคำนวณหลายรายการ และอื่นๆ คุณควรเข้าใจปัญหาและใช้กรณีต่างๆ ก่อนใช้ Monads
รายการชิ้นส่วน:





































![รายการที่เชื่อมโยงคืออะไร? [ส่วนที่ 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)