이 연습에서는 id, name, email 등 몇 가지 속성을 가진 객체가 포함된 프로미스를 반환하는 getUser 함수가 있습니다.

const getUser = () => {
	return Promise.resolve({
	  id: "123",
	  name: "John",
	  email: "[email protected]",
	});
}

getUser 위로 마우스를 가져가면 객체가 Promise 타입으로 래핑된 것을 볼 수 있습니다.

// Displayed while hovering
const getUser: () => Promise<{
  id: string;
  name: string;
  email: string;
}>

함수가 반환하는 것을 프로미스로 래핑하는 Promise.resolve 를 반환하기 때문입니다.

getUser 에서 반환 타입을 가져오려면 이전 연습에서 본 것처럼 ReturnType 유틸리티 타입을 사용해 볼 수 있습니다.

type ReturnValue = ReturnType<typeof getUser>;

그러나 이 경우에도 반환 값은 여전히 Promise 타입으로 래핑됩니다.

// Displayed while hovering over ReturnValue

const ReturnValue = Promise<{
  id: string;
  name: string;
  email: string;
}>

Challenge

여러분은 임무는 아직 사용하지 않은 유틸리티 타입을 사용하여 기다리던 프로미스의 결과를 추출하는 것입니다.