Async type trace

Promise 타입 이동

async 함수는 값을 Promise<T>로 감싸고, await는 그 안의 T를 꺼내며, 실패 경로는 별도로 좁혀야 합니다.

return

async 반환

함수 본문에서 User를 반환해도 호출부 타입은 Promise<User>입니다.

await

성공 값 추출

await getUser() 이후 변수는 User로 추론되어 속성 접근이 안전해집니다.

catch

오류는 좁혀서 처리

catch의 값은 모양을 확신하지 말고 unknown 기준으로 검사합니다.

finally

정리는 결과와 분리

성공 값 변환은 try, 실패 대응은 catch, 공통 정리는 finally에 둡니다.

Promise.all

모든 값이 필요할 때

튜플 결과를 구조 분해하면 각 위치의 타입이 유지됩니다.

allSettled

부분 실패를 기록할 때

status를 확인한 뒤 valuereason을 분리합니다.

race / any

가장 빠른 결과를 고를 때

실패 의미가 다르므로 타임아웃과 후보 성공 중 무엇을 원하는지 먼저 정합니다.

타입 추적법

비동기 함수를 읽을 때는 호출부의 Promise 타입, await 이후 타입, catch의 오류 타입을 따로 표시합니다.