async 반환
함수 본문에서 User를 반환해도 호출부 타입은
Promise<User>입니다.
async 함수는 값을 Promise<T>로 감싸고,
await는 그 안의 T를 꺼내며, 실패 경로는
별도로 좁혀야 합니다.
함수 본문에서 User를 반환해도 호출부 타입은
Promise<User>입니다.
await getUser() 이후 변수는 User로
추론되어 속성 접근이 안전해집니다.
catch의 값은 모양을 확신하지 말고
unknown 기준으로 검사합니다.
성공 값 변환은 try, 실패 대응은 catch,
공통 정리는 finally에 둡니다.
튜플 결과를 구조 분해하면 각 위치의 타입이 유지됩니다.
status를 확인한 뒤 value와
reason을 분리합니다.
실패 의미가 다르므로 타임아웃과 후보 성공 중 무엇을 원하는지 먼저 정합니다.
비동기 함수를 읽을 때는 호출부의 Promise 타입, await 이후 타입, catch의 오류 타입을 따로 표시합니다.