minstudio

비동기 처리와 Promise 제네릭

비동기 함수(Promise)는 당장 데이터를 뱉어내지 않기 때문에 반환 타입을 정의할 때 주의해야 합니다. Promise<성공시데이터타입> 형태로 제네릭을 넘겨주면, await로 결과를 받았을 때 완벽한 타입 추론의 마법을 경험할 수 있습니다.

📦 택배 상자 (Promise) 와 내용물 명세서 송장: User 타입 📦 Promise<User> "이 택배 박스를 나중에(await) 까보면 무조건 User 타입의 데이터가 들어있을거야!"
// Promise는 성공 시 "어떤 타입"의 데이터를 줄 것인지 제네릭으로 미리 약속해야 합니다.
function fetchUserData(): Promise<{ name: string; age: number }> {
    return fetch("https://api.test.com/user")
        .then(response => response.json());
}

async function run() {
    // await를 쓰면 Promise 껍데기가 벗겨지고 진짜 데이터가 user 변수에 담깁니다.
    // TS는 이미 user가 { name: string; age: number } 구조라는 것을 완벽히 알고 있습니다!
    const user = await fetchUserData();
    console.log(user.name);
}
비동기 처리와 Promise 제네릭 | Minstudio