[typescript] `.catch()` 메소드를 사용하여 프로미스 체이닝 중 발생한 에러를 어떻게 처리할 수 있나요?

예를 들어, 다음과 같은 프로미스 체이닝 코드가 있다고 가정해봅시다.

function asyncFunction(): Promise<string> {
  return new Promise((resolve, reject) => {
    // 비동기 작업 수행
    if (/* 에러 발생 조건 */) {
      reject(new Error('에러 메시지'));
    } else {
      resolve('성공적으로 완료된 결과');
    }
  });
}

asyncFunction()
  .then(result => {
    console.log(result);
    return result.toUpperCase();
  })
  .then(upperCaseResult => {
    console.log(upperCaseResult);
  })
  .catch(error => {
    console.error('에러 발생: ', error);
  });

위의 예제에서 .catch() 메소드는 프로미스 체이닝 중에 발생한 모든 에러를 처리합니다. 만약 체이닝 중에 어느 부분에서든 에러가 발생하면, 해당 에러는 가장 가까운 .catch() 블록으로 전달됩니다. 그래서 체이닝 과정 중에 발생한 모든 에러를 중앙에서 일괄적으로 처리할 수 있습니다.

.catch() 메소드를 사용함으로써 코드를 좀 더 간결하게 작성하고, 에러 핸들링을 효율적으로 관리할 수 있습니다.