스킬 fp-ts-errors
📦

fp-ts-errors

안전

fp-ts 오류 처리를 TypeScript에서 마스터하세요

try/catch 스파게티 코드와의 싸움을 그만하세요. 예측 가능하고 구성 가능한 오류 처리를 위해 fp-ts Either와 TaskEither를 사용하여 타입 안전 값을 오류로 처리하는 방법을 배우세요.

지원: Claude Codex Code(CC)
🥉 74 브론즈
1

스킬 ZIP 다운로드

2

Claude에서 업로드

설정 → 기능 → 스킬 → 스킬 업로드로 이동

3

토글을 켜고 사용 시작

테스트해 보기

"fp-ts-errors" 사용 중입니다. 유효하지 않은 이메일, 짧은 비밀번호, 누락된 age로 사용자 등록 양식 검증

예상 결과:

Left(['유효하지 않은 이메일 형식', '비밀번호는 최소 8자 이상이어야 합니다', 'Age는 필수입니다']) - 세 가지 검증 오류가 모두 함께 반환됨, 첫 번째 오류에서 실패하지 않음

"fp-ts-errors" 사용 중입니다. getUser(userId), getProduct(productId), createOrder(user, product)를 체이닝其中 getUser가 Left('User not found')를 반환

예상 결과:

Left('User not found') - 체인이 첫 번째 실패에서 중지됨, 후속 작업은 실행되지 않으며, 오류가 깔끔하게 전파됨

"fp-ts-errors" 사용 중입니다. TaskEither로 사용자 데이터 가져오기, 네트워크 요청이 연결 오류로 실패

예상 결과:

Left({ code: 'NETWORK', message: '서버 연결에 실패했습니다' }) - 프로그래밍 방식 처리를 위한 오류 코드와 표시용 인간이 읽을 수 있는 메시지가 있는 구조화된 오류

보안 감사

안전
v1 • 2/25/2026

This skill is educational documentation teaching fp-ts error handling patterns in TypeScript. The static analyzer produced 127 false positives by misidentifying Markdown code block backticks as shell commands. All network references are code examples demonstrating TaskEither usage, not executable code. No actual command execution, network calls, or system access exists in this skill.

1
스캔된 파일
857
분석된 줄 수
0
발견 사항
1
총 감사 수
보안 문제를 찾지 못했습니다
감사자: claude

품질 점수

38
아키텍처
100
유지보수성
87
콘텐츠
50
커뮤니티
100
보안
91
사양 준수

만들 수 있는 것

오류 축적형 폼 검증

첫 번째 오류에서 실패하는 대신 모든 검증 오류를 한 번에 수집하여 사용자 입력 폼을 검증합니다.

API 오류 처리 파이프라인

네트워크 오류, HTTP 상태 코드, JSON 파싱 실패를 타입화된 오류 결과로 처리하는 강력한 API 레이어를 구축합니다.

데이터베이스 작업 체인

모든 실패가 예외를 발생시키지 않고 구조화된 오류를 반환하는 여러 데이터베이스 작업을 체이닝합니다.

이 프롬프트를 사용해 보세요

기본 Either 패턴
이 함수를 예외를 발생시키는 대신 fp-ts Either를 사용하도록 변환하는 것을 도와주세요: [함수를 붙여넣으세요]. fold로 오류 케이스를 처리하는 방법을 보여주세요.
여러 작업 체이닝
다음 세 가지 작업을 체이닝해야 합니다: getUser, validatePermissions, createResource. 각각 서로 다른 오류 타입으로 실패할 수 있습니다. fp-ts Either를 사용하여它们를 결합하는 방법을 보여주세요.
모든 오류가 포함된 폼 검증
fp-ts를 사용하여 이메일, 비밀번호, age 필드를 검증하는 폼 검증기를 생성하세요. 첫 번째 오류가 아닌 한 번에 모든 오류를 수집하기 위해 validation applicative를 사용하세요.
TaskEither를 사용한 비동기 재시도
이 fetch 호출을 TaskEither로 래핑하고 지수 백오프가 있는 재시도 로직을 추가하는 방법을 보여주세요. 네트워크 오류와 200이 아닌 HTTP 응답 모두를 구조화된 오류 타입으로 처리하세요.

모범 사례

  • 예외를 발생시키는 코드를 경계(외부 API, 파일 I/O, JSON 파싱)에서 래핑하고 내부에서는 Either를 반환하세요
  • 더 나은 타입 안전성을 위해 일반 문자열 대신 설명적인 오류 타입(유니온 또는 인터페이스)을 사용하세요
  • 게으른 평가를 유지하고 조기 실행을 피하기 위해 비동기 작업에 TaskEither를 적용하세요

피하기

  • 체인에서 fold를 너무 일찍 호출 - 각 단계 후가 아닌 마지막에 오류를 처리하세요
  • Either와 발생시킨 예외를 혼합 - 하나의 오류 처리 전략에 지속적으로 충실하세요
  • 예상되는 제어 흐름(예: 'not found')에 Left를 사용 - 실제 예외적인 경우에 오류를 예약하세요

자주 묻는 질문

Either와 TaskEither는 언제 사용해야 하나요?
실패할 수 있는 동기 작업에는 Either를 사용하고, 실패할 수 있는 비동기 작업(Promise)에는 TaskEither를 사용하세요. TaskEither는 게으르고 Promise<Either<E, A>>를 생성하는 함수를 반환합니다.
기존 try/catch 코드를 fp-ts로 어떻게 변환하나요?
동기 코드에는 E.tryCatch로, 비동기 코드에는 TE.tryCatch로 래핑하세요. 잡힌 예외를 오류 타입으로 변환하는 onError 함수를 제공하세요.
chain과 chainW의 차이점은 무엇인가요?
chain은 두 Either 타입이 동일한 오류 타입을 가져야 합니다. chainW(더 넓음)는 서로 다른 오류 타입을 자동으로 유니온하여 서로 다른 오류 타입을 가진 작업을 체이닝할 때 유용합니다.
Either에서 값을 어떻게 가져오나요?
fold를 사용하여 두 경우를 명시적으로 처리하거나, getOrElse를 사용하여 Left에 기본값을 제공하거나, Right라고 확신할 때만 unsafeGetRight를 사용하세요. 프로덕션 코드에서는 unsafeGetRight를 피하세요.
기존 Promise 기반 코드에서 fp-ts를 사용할 수 있나요?
네. TE.tryCatch로 Promise를 래핑하고, 외부 API에 필요할 때 toPromise를 사용하거나 TaskEither 함수를 실행하여 Promise로 다시 변환하세요.
빠른 실패 대신 여러 검증 오류를 어떻게 수집하나요?
getApplicativeValidation와 Semigroup을 사용하여 sequenceS를 사용하세요. 이것은 모든 검증을 결합하고 Semigroup의 concat 연산을 사용하여 오류를 축적합니다.

개발자 세부 정보

파일 구조

📄 SKILL.md