TypeScript의 7줄로 Node의 Promisify 유형 안전 버전을 구현합니다.

type Callback<A> = (args: A) => void;

const promisify = <T, A>(fn: (args: T, cb: Callback<A>) => void): ((args: T) => Promise<A>) =>
  (args: T) => new Promise((resolve) => {
    fn(args, (callbackArgs) => {
      resolve(callbackArgs);
    });
  });


유형 추론이 작동하는 것을 보여주는 this video을 확인하십시오!

원래 함수의 인수와 콜백 함수의 인수에 대해 일반적으로 이 함수를 구현하기 위해 유형 변수TA를 사용하고 있습니다.

수업 과정:


  • fn의 두 번째 인수에 대해 인라인 익명 함수를 정의해야 했습니까? 다른 방법으로 호출할 수 있었습니까fn?
  • Callback 유형은 많은 노드 API에서와 같이 일반적인 오류 우선 콜백이 아닙니다(이는 내가 약속하려는 함수가 오류 우선 콜백이 아니기 때문입니다). 따라서 오류 우선 콜백의 오류가 null이 아닌 경우 내 promisify 함수를 reject로 리팩토링하는 연습으로 남겨 보겠습니다.
  • 좋은 웹페이지 즐겨찾기