[typescript] async 함수의 반환 값 타입 지정 방법

TypeScript에서 async 함수를 사용할 때 반환 값의 타입을 지정하는 방법에 대해 알아보겠습니다.

1. Promise를 사용하는 경우

async 함수의 반환 값은 보통 Promise 객체입니다. 그러므로, 반환 값의 타입은 실제 값을 가리키는 것이 아니라 Promise 객체를 가리켜야 합니다.

예를 들어, async 함수가 number를 반환한다면 다음과 같이 타입을 지정할 수 있습니다.

async function getNumber(): Promise<number> {
  return 123;
}

위 코드에서 반환 값의 타입으로 **Promise**를 명시하였습니다.

2. 반환 값이 없는 경우

만약 async 함수가 어떠한 값을 반환하지 않는다면, 반환 값의 타입으로 **Promise**를 사용할 수 있습니다.

async function logMessage(message: string): Promise<void> {
  console.log(message);
}

위 코드에서 반환 값의 타입으로 **Promise**를 명시하여 해당 함수가 어떠한 값을 반환하지 않음을 나타내고 있습니다.

3. 사용자 정의 타입을 반환하는 경우

async 함수가 사용자가 정의한 타입을 반환하는 경우에도, 해당 타입을 Promise로 감싸서 반환하도록 타입을 지정하여야 합니다.

type User = {
  id: number;
  name: string;
}

async function getUserInfo(id: number): Promise<User> {
  // ... 비동기 작업 수행
  return { id, name: 'John Doe' };
}

위와 같이, async 함수의 반환 값이 사용자가 정의한 User 타입인 경우에도 **Promise**로 반환 값을 지정할 수 있습니다.

결론

async 함수의 반환 값 타입을 지정할 때에는 실제 값을 가리키는 것이 아니라 Promise 객체를 명시하여야 합니다. Promise 객체를 반환하는 async 함수의 반환 값 타입을 올바르게 지정함으로써 코드의 가독성을 높일 수 있습니다.