Files
2nd/01_Archive/2026-04-20/기본 타입에의 집착(Primitive Obsession).md
T

4.7 KiB

id, category, confidence_score, tags, last_reinforced, github_commit
id category confidence_score tags last_reinforced github_commit
P-REINFORCE-AUTO-5462C7 10_Wiki/💡 Topics/Programming & Language 0.90
auto-reinforced
2026-04-20 [P-Reinforce] Continuous Worker - 기본 타입에의 집착(Primitive Obsession)

기본 타입에의 집착(Primitive Obsession)

📌 한 줄 통찰 (The Karpathy Summary)

'기본 타입에의 집착(Primitive Obsession)'은 이메일 주소, 이름, 식별자, 통화 등 의미적으로 서로 다른 데이터를 string이나 number 같은 단일한 기본(원시) 타입으로만 취급하여 표현하려는 문제를 뜻한다[1, 2]. TypeScript와 같이 구조적 타이핑(Structural Typing)을 사용하는 언어에서는 컴파일러가 이러한 데이터들의 의미적 차이를 구분하지 못해 의도치 않은 데이터 혼용 실수를 방지할 수 없다[2, 3]. 이 문제를 해결하기 위해 고유한 표식을 부여하는 브랜디드 타입(Branded Types)이나 불투명 타입(Opaque Types) 같은 기법이 해결책으로 사용된다[2-4].

📖 구조화된 지식 (Synthesized Content)

  • 기본 타입 집착의 원인 및 한계 현대 애플리케이션에서 string은 토큰, 리소스 식별자, 이벤트 이름 등 아주 다양한 역할을 하며, number 역시 통화, 가상 포인트, 타임스탬프 등을 나타낸다[1]. 하지만 TypeScript의 구조적 타이핑 특성상, 이메일 주소가 필요한 매개변수에 사용자의 이름을 전달해도 둘 다 string이라는 이유로 컴파일러가 호환성을 인정해버리며 오류를 잡아내지 못한다[2]. 즉, 외견상 구조가 같아 보이는 기본 타입들을 의미론적으로 차별화할 수 있는 내장된 방법이 부족한 것이 근본적인 원인이다[5].

  • 실제 발생할 수 있는 위험성 이러한 기본 타입에의 집착은 런타임 오류와 심각한 논리적 결함을 유발한다. 가장 널리 알려진 비극적 사례는 미국 단위계(파운드힘 초)와 SI 단위계(뉴턴 초)를 동일한 숫자 타입으로 혼용하여 3억 2,760만 달러 규모의 궤도선이 소실된 Mars Climate Orbiter 사건이다[4]. 이 외에도 서로 다른 통화(예: EUR와 GBP)의 상품 가격을 의미 구분 없이 number 타입으로 묶어 연산할 경우 시스템의 불일치나 수익 손실을 초래할 수 있으며[6], 인증 서버 토큰과 API 토큰을 혼동하여 잘못된 인자로 전달하는 버그가 발생할 수 있다[7].

  • 해결 방안: 명목적 타이핑의 수복 기본 타입에의 집착을 해결하기 위해 도메인 기반 설계(DDD) 등에서 '브랜디드 타입(Branded Types)' 또는 '불투명 타입(Opaque Types)'이 널리 사용된다[2, 8]. 이는 런타임에는 존재하지 않지만 컴파일 시점에만 존재하는 고유한 속성(브랜드)을 원시 타입에 강제로 덧붙여(예: string & { __brand: 'UserId' }) 의미가 다른 타입 간의 호환과 섞임을 차단하는 기법이다[2, 9]. 이를 통해 사용자 ID와 주문 ID를 엄격히 분리하거나[10], 철저히 검증된 데이터(Sanitized String 등)만이 시스템 내부 로직으로 진입하도록 강제하여 데이터 오염을 예방할 수 있다[2, 11].

⚠️ 모순 및 업데이트 (Contradictions & RL Update)

  • 과거 데이터와의 충돌: 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
  • 정책 변화: Programming & Language 분야의 자동 자산화 수행.

🔗 지식 연결 (Graph)


Last updated: 2026-04-18

  • Raw Source: 00_Raw/2026-04-20/기본 타입에의 집착(Primitive Obsession).md