0Pricing
TypeScript Academy · 강의

Result 패턴: Ok와 Err

오류를 던지는 대신 값으로 반환합니다.

Result 패턴: Ok와 Err은(는) CoddyKit의 무료 TypeScript Academy 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 TypeScript Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. TypeScript Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

환영합니다

결과 패턴은 오류를 값으로 반환하므로, try/catch 없이도 타입 안전하게 오류를 처리할 수 있습니다.

결과 타입

Ok 및 Err 변형을 포함하는 제네릭 결과 타입을 정의합니다.
type Ok<T> = { ok: true; value: T };
type Err<E = Error> = { ok: false; error: E };
type Result<T, E = Error> = Ok<T> | Err<E>;

도우미 생성자

더 깔끔한 코드를 위해 ok() 및 err() 도우미를 만듭니다.
const ok = <T>(value: T): Ok<T> => ({ ok: true, value });
const err = <E>(error: E): Err<E> => ({ ok: false, error });

결과 반환

오류를 던지는 대신 함수에서 결과를 반환합니다.
async function fetchUser(id: number): Promise<Result<User>> {
  try {
    const user = await db.findUser(id);
    if (!user) return err(new Error('Not found'));
    return ok(user);
  } catch (e) { return err(e as Error); }
}

결과 사용

값을 사용하기 전에 ok 플래그를 확인합니다.
const result = await fetchUser(1);
if (result.ok) {
  console.log(result.value.name); // User
} else {
  console.error(result.error.message);
}

mapResult 도우미

성공한 결과에 매핑하여 값을 변환합니다.
function mapResult<T, U, E>(r: Result<T, E>, fn: (v: T) => U): Result<U, E> {
  return r.ok ? ok(fn(r.value)) : r;
}

flatMapResult 도우미

결과를 반환하는 함수들을 안전하게 연결합니다.
function flatMap<T, U, E>(r: Result<T, E>, fn: (v: T) => Result<U, E>): Result<U, E> {
  return r.ok ? fn(r.value) : r;
}

결과와 예외 비교

예외는 암시적이며 타입이 지정되지 않습니다. 결과는 타입 시그니처에 명시된 값입니다.

라이브러리 지원

neverthrow, true-myth, fp-ts와 같은 라이브러리는 프로덕션에서 바로 사용할 수 있는 결과 타입을 제공합니다.

API 핸들러의 결과

깔끔한 오류 전파를 위해 Express 핸들러에서 결과를 사용합니다.
app.get('/users/:id', async (req, res) => {
  const result = await fetchUser(parseInt(req.params.id));
  if (result.ok) res.json(result.value);
  else res.status(404).json({ error: result.error.message });
});

비동기 결과

비동기 처리와 결과 패턴을 결합하려면 Promise>를 사용합니다.
type AsyncResult<T, E = Error> = Promise<Result<T, E>>;

빠른 확인

예외를 던지는 방식보다 결과 패턴이 갖는 가장 큰 장점은 무엇인가요?

복습

결과 패턴의 Ok와 Err: 이 주제의 핵심 개념과 실제 TypeScript 프로젝트에 적용하는 방법을 배웠습니다.

자주 묻는 질문

“Result 패턴: Ok와 Err” 강의는 무료인가요?

네 — “Result 패턴: Ok와 Err” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 TypeScript Academy 강의 전체를 잠금 해제할 수 있습니다. TypeScript Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“Result 패턴: Ok와 Err”에서 뭘 배우나요?

오류를 던지는 대신 값으로 반환합니다. 브라우저에서 직접 실행하는 실습 코드로 TypeScript Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

TypeScript Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 TypeScript Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“Result 패턴: Ok와 Err” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 TypeScript Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 TypeScript Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 형식이 지정된 오류 클래스 및 계층 구조
  2. Result 패턴: Ok와 Err
  3. 포착한 오류 좁히기: unknown과 Error
  4. 비동기 TypeScript 코드의 오류 처리
← TypeScript Academy(으)로 돌아가기