Nest.JS | 모나드 -> 아마도 -> 만들기

Jan 27 2023
내부 값을 가져와 적절한 Monad 인스턴스로 래핑하는 팩토리 메서드입니다. make 메소드는 종종 모나드 인스턴스를 생성하기 위한 생성자의 대안으로 사용됩니다.

내부 값을 가져와 적절한 Monad 인스턴스로 래핑하는 팩토리 메서드입니다. 이 make메서드는 종종 모나드 인스턴스를 생성하기 위한 생성자의 대안으로 사용됩니다. 일반적으로 더 구성 가능한 방식으로 모나드를 만드는 데 사용되며, 모나드 인스턴스에 더 많은 논리나 추가 동작을 추가하는 데 사용할 수 있을 뿐만 아니라 클라이언트 코드가 잘못된 내부 값을 가진 모나드 인스턴스를 만드는 것을 방지하는 데 사용할 수 있습니다.

make다음은 JavaScript에서 Maybe 모나드를 생성하는 메서드 의 예입니다 .

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메서드는 값을 받아 모나드의 새 인스턴스를 반환합니다.

make다음은 메서드를 사용하여 Nest.js에서 Maybe Monad의 새 인스턴스를 만드는 방법 의 예입니다 .

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)null이 아니거나 정의되지 않은 some(user)경우 반환하고 , 그렇지 않으면 을 반환합니다 .usernone

또한 이 .map()함수를 사용하여 래핑된 값이 있는 경우 변환하고 함수를 .chain()사용하여 여러 계산을 연결할 수 있습니다.

이 예제는 기본 예제이며 함수형 프로그래밍에서 모나드의 모든 기능을 보여주지 않는다는 점에 유의해야 합니다. 모나드는 오류 처리, 여러 계산 연결 등과 같은 다양한 경우를 처리하는 데 사용할 수 있습니다. 모나드를 적용하기 전에 문제와 사용 사례를 이해하는 것이 가장 좋습니다.

부품 목록: