비동기 TypeScript 코드의 오류 처리
형식이 지정된 래퍼와 유틸리티로 비동기 오류를 관리합니다.
비동기 TypeScript 코드의 오류 처리은(는) CoddyKit의 무료 TypeScript Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 TypeScript Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. TypeScript Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
환영합니다
비동기 처리의 Try-Catch
async function loadUser(id: number): Promise<User> {
try {
return await api.getUser(id);
} catch (err: unknown) {
if (err instanceof Error) throw new AppError(err.message);
throw new AppError('Unknown error');
}
}Promise.all 오류
try {
const [user, posts] = await Promise.all([getUser(id), getPosts(id)]);
} catch (err) { /* one or both failed */ }Promise.allSettled
const results = await Promise.allSettled([getUser(1), getPosts(1)]);
results.forEach(r => {
if (r.status === 'fulfilled') console.log(r.value);
else console.error(r.reason);
});타입이 지정된 비동기 결과
async function safeGet<T>(fn: () => Promise<T>): Promise<Result<T>> {
try { return { ok: true, value: await fn() }; }
catch (e) { return { ok: false, error: e as Error }; }
}처리되지 않은 거부
process.on('unhandledRejection', (reason: unknown) => {
console.error('Unhandled rejection:', reason);
process.exit(1);
});Promise.race를 사용한 시간 초과
function withTimeout<T>(promise: Promise<T>, ms: number): Promise<T> {
const timeout = new Promise<never>((_, reject) =>
setTimeout(() => reject(new Error('Timeout')), ms));
return Promise.race([promise, timeout]);
}재시도 패턴
async function retry<T>(fn: () => Promise<T>, times: number): Promise<T> {
for (let i = 0; i < times; i++) {
try { return await fn(); } catch (e) { if (i === times - 1) throw e; }
}
throw new Error('Unreachable');
}동시 실행 오류 처리
const [userResult, postsResult] = await Promise.allSettled([
getUser(id).then(u => ({ ok: true, value: u })).catch(e => ({ ok: false, error: e })),
getPosts(id).then(p => ({ ok: true, value: p })).catch(e => ({ ok: false, error: e })),
]);AsyncQueue 오류 전파
async function* generate() {
yield await fetchA();
yield await fetchB(); // error here stops the loop
}
for await (const item of generate()) { process(item); }Next.js의 타입이 지정된 오류 미들웨어
'use server';
async function createUser(data: CreateUserDto): Promise<Result<User>> {
return safeGet(() => db.user.create({ data }));
}빠른 확인
복습
자주 묻는 질문
“비동기 TypeScript 코드의 오류 처리” 강의는 무료인가요?
네 — “비동기 TypeScript 코드의 오류 처리” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 TypeScript Academy 강의 전체를 잠금 해제할 수 있습니다. TypeScript Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“비동기 TypeScript 코드의 오류 처리”에서 뭘 배우나요?
형식이 지정된 래퍼와 유틸리티로 비동기 오류를 관리합니다. 브라우저에서 직접 실행하는 실습 코드로 TypeScript Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
TypeScript Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 TypeScript Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“비동기 TypeScript 코드의 오류 처리” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 TypeScript Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 TypeScript Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 형식이 지정된 오류 클래스 및 계층 구조
- Result 패턴: Ok와 Err
- 포착한 오류 좁히기: unknown과 Error
- 비동기 TypeScript 코드의 오류 처리