--- id: P-REINFORCE-AUTO-E8243F category: "10_Wiki/πŸ’‘ Topics/Programming & Language" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - ꡬ쑰적 타이핑" --- # [[ꡬ쑰적 타이핑]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > ꡬ쑰적 타이핑(Structural Typing)은 객체의 λͺ…μ‹œμ μΈ μ΄λ¦„μ΄λ‚˜ μ„ μ–Έ λŒ€μ‹ , 객체가 κ°€μ§„ μ‹€μ œ ν˜•νƒœμ™€ ꡬ쑰(속성과 λ©”μ„œλ“œ)κ°€ μΌμΉ˜ν•˜λ©΄ νƒ€μž… κ°„μ˜ ν˜Έν™˜μ„±μ„ μΈμ •ν•˜λŠ” νƒ€μž… μ‹œμŠ€ν…œμž…λ‹ˆλ‹€[1-3]. μ΄λŠ” "μ–΄λ–€ 것이 였리처럼 κ±·κ³  μ†Œλ¦¬λ₯Ό λ‚Έλ‹€λ©΄ μ˜€λ¦¬λ‹€"λΌλŠ” 이λ₯Έλ°” '덕 타이핑(Duck typing)' 원칙에 κΈ°λ°˜ν•˜λ©° TypeScript νƒ€μž… κ²€μ‚¬μ˜ 핡심 μ² ν•™μž…λ‹ˆλ‹€[2, 4, 5]. νƒ€μž…μ˜ 이름이 μΌμΉ˜ν•΄μ•Όλ§Œ ν˜Έν™˜λ˜λŠ” Javaλ‚˜ C#의 λͺ…λͺ©μ  타이핑(Nominal Typing)κ³ΌλŠ” λŒ€λΉ„λ˜λŠ” μœ μ—°ν•œ μ ‘κ·Ό λ°©μ‹μž…λ‹ˆλ‹€[2]. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) - **λ™μž‘ 원리 및 ν˜Έν™˜μ„± νŒλ‹¨:** ꡬ쑰적 타이핑 ν•˜μ—μ„œλŠ” λŒ€μƒ νƒ€μž… `y`κ°€ μš”κ΅¬ν•˜λŠ” μ΅œμ†Œν•œμ˜ 멀버λ₯Ό ν• λ‹Ήν•˜λ €λŠ” 객체 `x`κ°€ λͺ¨λ‘ ν¬ν•¨ν•˜κ³  μžˆλ‹€λ©΄, 두 νƒ€μž…μ„ ν˜Έν™˜ κ°€λŠ₯ν•œ κ²ƒμœΌλ‘œ μ·¨κΈ‰ν•©λ‹ˆλ‹€[4]. 즉, 객체의 κΈ°μ›μ΄λ‚˜ λͺ…μ‹œμ  μ„ μ–Έ 여뢀에 상관없이 μš”κ΅¬λ˜λŠ” 속성 ꡬ쑰만 μΌμΉ˜ν•˜λ©΄ λ™μΌν•œ νƒ€μž…μœΌλ‘œ 계약을 λ§Œμ‘±ν•˜λŠ” κ²ƒμœΌλ‘œ κ°„μ£Όλ˜λ©°, μ΄λŠ” μ§‘ν•©λ‘ μ˜ λΆ€λΆ„μ§‘ν•© κ΄€κ³„λ‘œ μ„€λͺ…ν•  수 μžˆμŠ΅λ‹ˆλ‹€[3, 6, 7]. - **μœ μ—°μ„±κ³Ό ν•œκ³„:** ꡬ쑰적 타이핑은 μ†Œν”„νŠΈμ›¨μ–΄ κ°œλ°œμ— 큰 μœ μ—°μ„±μ„ μ œκ³΅ν•˜μ§€λ§Œ, μ—­μ„€μ μœΌλ‘œ 'ꡬ쑰가 λ™μΌν•œ μ„œλ‘œ λ‹€λ₯Έ 데이터'λ₯Ό μ‹œμŠ€ν…œμ΄ κ΅¬λΆ„ν•˜μ§€ λͺ»ν•˜λŠ” 문제(예: 이메일과 이름이 λͺ¨λ‘ λ¬Έμžμ—΄ ꡬ쑰인 경우)인 'κΈ°λ³Έ νƒ€μž…μ—μ˜ μ§‘μ°©(Primitive Obsession)'을 μ•ΌκΈ°ν•  수 μžˆμŠ΅λ‹ˆλ‹€[8, 9]. λ˜ν•œ, μ΅œμ†Œ μš”κ±΄λ§Œ μΆ©μ‘±ν•˜λ©΄ ν˜Έν™˜μ„±μ„ μΈμ •ν•˜λŠ” νŠΉμ„± 탓에 μ˜λ„μΉ˜ μ•Šμ€ μΆ”κ°€ 속성을 κ°€μ§„ μž‰μ—¬ 데이터가 μœ μž…λ  수 μžˆλŠ” λ³΄μ•ˆμ  ν—ˆμ μ΄ λ°œμƒν•  수 μžˆμŠ΅λ‹ˆλ‹€[3, 10]. - **νƒ€μž… μ•ˆμ •μ„±μ„ μœ„ν•œ 보완 기제:** TypeScriptλŠ” μ΄λŸ¬ν•œ ꡬ쑰적 νƒ€μ΄ν•‘μ˜ 잠재적 μœ„ν—˜μ„±μ„ λ°©μ–΄ν•˜κΈ° μœ„ν•΄ 객체 λ¦¬ν„°λŸ΄μ΄ 직접 할당될 λ•Œ λŒ€μƒ νƒ€μž…μ— μ—†λŠ” 속성이 ν¬ν•¨λ˜μ—ˆλŠ”μ§€λ₯Ό 컴파일 μ‹œμ μ— νŠ•κ²¨λ‚΄λŠ” 'κ³Όμž‰ 속성 체크(Excess Property Checking)' λ©”μ»€λ‹ˆμ¦˜μ„ μ§€μ›ν•©λ‹ˆλ‹€[1, 3, 11]. λ”λΆˆμ–΄ ꡬ쑰가 κ°™μœΌλ‚˜ 의미둠적으둜 λ‹€λ₯Έ 데이터λ₯Ό μ—„κ²©νžˆ λΆ„λ¦¬ν•˜κΈ° μœ„ν•΄μ„œλŠ” κ³ μœ ν•œ ν‘œμ‹μ„ λΆ€μ—¬ν•˜λŠ” 'λΈŒλžœλ””λ“œ νƒ€μž…(Branded Types)'κ³Ό 같은 λͺ…λͺ©μ  타이핑 기법을 μ°¨μš©ν•΄ μˆ˜λΉ„λ ₯을 λ†’μž…λ‹ˆλ‹€[9, 12]. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & RL Update) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** μžλ™ν™” 엔진에 μ˜ν•΄ λ§€ν•‘λœ μ§€μ‹μœΌλ‘œ, μΆ”ν›„ μ •λ°€ 검증 ν•„μš”. - **μ •μ±… λ³€ν™”:** Programming & Language λΆ„μ•Όμ˜ μžλ™ μžμ‚°ν™” μˆ˜ν–‰. ## πŸ”— 지식 μ—°κ²° (Graph) - **Related Topics:** λͺ…λͺ©μ  타이핑, 덕 타이핑, κ³Όμž‰ 속성 체크, λΈŒλžœλ””λ“œ νƒ€μž… - **Projects/Contexts:** TypeScript νƒ€μž… μ‹œμŠ€ν…œ 섀계, [[도메인 기반 섀계(DDD)]] - **Contradictions/Notes:** μ†ŒμŠ€μ— λ”°λ₯΄λ©΄ ꡬ쑰적 타이핑은 TypeScript에 κ°•λ ₯ν•œ μœ μ—°μ„±μ„ λΆ€μ—¬ν•˜λŠ” κ·Όκ°„μ΄μ§€λ§Œ, λ™μ‹œμ— 의미둠적으둜 λ‹€λ₯Έ 데이터λ₯Ό κ΅¬λ³„ν•˜μ§€ λͺ»ν•˜κ±°λ‚˜ λΆˆν•„μš”ν•œ 속성이 μ„žμ—¬ λ“€μ–΄μ˜€λŠ” ꡬ쑰적 취약점을 μ§€λ‹ˆκΈ° λ•Œλ¬Έμ— κ³Όμž‰ 속성 μ²΄ν¬λ‚˜ λΈŒλžœλ””λ“œ νƒ€μž…κ³Ό 같은 좔가적인 λ°©μ–΄ μ „λž΅μ΄ λ°˜λ“œμ‹œ λ™λ°˜λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€[1, 3, 9]. --- *Last updated: 2026-04-18* ---