피드로 돌아가기
Dev.toFrontend
원문 읽기
unknown 패턴 도입을 통한 Runtime Crash 90% 제거 및 타입 안전성 확보
Stop Reaching for `any`. The Modern `unknown` Pattern Fixes 90% of It
AI 요약
Context
외부 API 및 JSON.parse와 같은 Trust Boundary에서 as 캐스팅이나 any 타입을 남용하여 런타임 타입 불일치 발생. 컴파일 단계에서 타입 체크를 무력화함으로써 런타임에 undefined 참조 에러와 500 Internal Server Error가 빈번하게 발생하는 구조적 한계 노출.
Technical Solution
- Trust Boundary 진입점의 모든 데이터를
unknown타입으로 지정하여 무분별한 프로퍼티 접근을 컴파일 단계에서 차단 - Type Predicate(
value is User)를 구현하여 런타임 값 검증과 타입 Narrowing을 결합한 안전한 타입 전환 구조 설계 - Assertion Function(
asserts value is User)을 통해 유효하지 않은 데이터 유입 시 즉시 Exception을 발생시켜 에러 전파 범위 최소화 - 내부 모듈(Trusted Inside)과 외부 경계(Unknown Outside)를 엄격히 분리하여 파싱 로직을 경계 지점에 집중 배치
as캐스팅 사용처를 Type Predicate 내부로 한정하여 코드 전반의 타입 불확실성 제거
실천 포인트
- 외부 API 응답 및 JSON 파싱 결과에 `any` 대신 `unknown` 적용 여부 검토 - `as` 키워드를 사용한 강제 타입 캐스팅을 제거하고 Type Predicate 기반의 Narrowing으로 대체 - 데이터 검증 실패 시 500 에러 대신 400 Bad Request로 응답하도록 Assertion 로직 배치 - 경계 검증 함수에 대해 유효 값과 비정상 값 케이스를 포함한 Unit Test 작성