Nest.JS | Monads -> อาจจะ -> ทำ

Jan 27 2023
เป็นวิธีการจากโรงงานที่ใช้ค่าภายในและรวมเข้ากับอินสแตนซ์ Monad ที่เหมาะสม เมธอด make มักใช้เป็นทางเลือกแทนตัวสร้างเพื่อสร้างอินสแตนซ์ monad

เป็นวิธีการจากโรงงานที่ใช้ค่าภายในและรวมเข้ากับอินสแตนซ์ 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

รายการชิ้นส่วน: