callback, promise, async/await를 같은 문제 위에서 비교하기 위한 TypeScript 실습 템플릿이다.
- 같은 비동기 문제를 세 가지 방식으로 표현한다.
- 성공 결과와 실패 결과를 모두 일관되게 다룬다.
- 구현 후 Jest 테스트로 직접 검증한다.
npm install
npm testasyncEvolution.ts에서 async/await 기준 예시를 보고, 같은 흐름을 다른 방식으로 표현한다.
- 구현할 함수
buildPaymentMessageCallbackbuildPaymentMessagePromise
- 기준 예시로 제공되는 함수
buildPaymentMessageAsync
참고:
- 파일 안에
buildPaymentMessageAsync가 들어 있다. - 이 함수는 문제를 빠르게 파악하기 위한
async/await기준 예시다. - 이 예시를 바탕으로 같은 흐름을
promise,callback으로도 표현해본다.
세 함수는 모두 같은 로직을 수행해야 한다.
userId와originalPrice를 받는다.- 사용자 조회 후 할인율을 조회한다.
- 최종 결제 금액을 계산해 문자열을 만든다.
- 실패 시 각 방식에 맞게 에러를 전달하거나 throw 한다.
u1, 10000->kim님의 최종 결제 금액은 9000원입니다.u2, 10000->lee님의 최종 결제 금액은 9700원입니다.
- 없는 사용자 ->
USER_NOT_FOUND - 없는 등급 ->
RATE_NOT_FOUND