TypeScript 안전 접근

Maybe 흐름과 옵셔널 체이닝의 실패 전파

값이 없을 수 있음을 숨기지 않고 타입에 남기면 접근 실패, 기본값, 조기 반환 지점이 명확해진다.

01

결측 타입화

API 응답, 캐시 미스, 선택되지 않은 값은 타입에서 null 가능성을 드러낸다.

nullable
02

안전 접근

optional chaining은 중간 값이 없을 때 접근 오류 대신 undefined를 반환한다.

short circuit
03

기본값 결정

nullish coalescing으로 0, 빈 문자열은 유지하고 null/undefined만 대체한다.

??
04

오류 승격

없으면 안 되는 값은 조기 반환이나 Result 형태로 명시적인 실패가 되게 한다.

domain error
부재
값이 없을 수 있는 것이 정상 흐름이면 optional 접근이 맞다. 프로필 이미지, 선택 필터, 캐시 미스처럼 기본값이 있다.
normal absence
오류
반드시 있어야 하는 값이면 조용히 undefined로 넘기지 않는다. 권한, 주문 id, 결제 금액은 즉시 실패 처리한다.
invariant
모나드
Maybe/Result 패턴은 실패 전파를 값의 조합으로 표현한다. 팀이 익숙하지 않으면 discriminated union과 guard부터 쓴다.
practical adoption

결측 처리 점검

0 보존 || 기본값 때문에 0이나 빈 문자열이 사라지지 않는다.
도메인 구분 단순 미입력과 시스템 오류가 같은 undefined로 합쳐지지 않는다.
경계 축소 nullable 값은 가능한 빨리 검증해 내부 로직을 non-null로 좁힌다.

안전 기본값

const label = user.profile?.displayName ?? "익명";
if (!orderId) return { ok: false, reason: "missing-order"
        overflow-wrap: break-word;
        word-break: keep-all;
      };