"Promise 가 아직 존재 안 하는 값에 대한 타입 붙은 wrapper."
`Promise` 가 묘사하는 것
Promise<T> 가 나중에 사용 가능할 T 타입 값 표현하는 generic 타입. Promise 가 3 상태 (pending, fulfilled, rejected); 타입이 fulfilled 값의 타입만 캡처. Rejection 이 타입 안 붙음 — TypeScript 가 어떤 에러 throw 될지 예측 못 함.
`Promise
- Async 함수 (
async function f(): Promise<User> { return getUser() }) new Promise<T>((resolve, reject) => ...)Promise.resolve(value)또는Promise.reject(error)fetch(),fs.readFile(), 등 library 호출
Promise 소비
2 방법: `.then(callback)` 체인 또는 async 함수 안 `await`. fetchUser().then(user => user.name) 와 const user = await fetchUser(); user.name 가 동등. async/await 형태가 일반적으로 선호 — 더 평평, 읽기 쉽고, try/catch 와 통합.
Composition 패턴
Async 함수가 자연스럽게 compose. async function load(): Promise 가 다른 async 함수 호출, await, derived 값 반환 가능. Promise wrapper 가 모든 step 가로질러 살아남음; 최상 호출에서만 unwrap (`await` 또는 `.then` 으로).
Promise 가 'T 타입의 미래 값' 의 타입. Async 코드를 '이건 너가 await 후의 타입' 으로 읽는 모델이 트랙의 나머지를 쉽게 만드는 거.