--- id: wiki-2026-0508-generics-and-polymorphism title: Generics and Polymorphism category: 10_Wiki/Topics status: needs_review canonical_id: self aliases: [P-Reinforce-AUTO-GEPO-001] duplicate_of: none source_trust_level: A confidence_score: 0.97 tags: [auto-reinforced, generics, polymorphism, typescript, type-safety, code-reuse, software-Architecture] raw_sources: [] last_reinforced: 2026-04-20 github_commit: pending inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08) tech_stack: language: unspecified framework: unspecified --- # [[Generics-and-Polymorphism|Generics-and-Polymorphism]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > "μœ μ—°ν•œ ν‹€, κ²¬κ³ ν•œ νƒ€μž…: λ°μ΄ν„°μ˜ ꡬ체적인 'κ°’'이 μ•„λ‹Œ 'ν˜•νƒœ'λ₯Ό μΆ”μƒν™”ν•˜μ—¬, ν•˜λ‚˜μ˜ μ½”λ“œκ°€ λ‹€μ–‘ν•œ νƒ€μž…μ„ μ•ˆμ „ν•˜κ²Œ 수용(Generics)ν•˜κ²Œ ν•˜κ±°λ‚˜, 같은 μ΄λ¦„μ˜ λͺ…령이 κ°μ²΄λ§ˆλ‹€ λ‹€λ₯΄κ²Œ 행동(Polymorphism)ν•˜κ²Œ λ§Œλ“œλŠ” μƒμœ„ μ•„ν‚€ν…μ²˜ 기술." ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) μ œλ„€λ¦­κ³Ό λ‹€ν˜•μ„±(Generics-and-Polymorphism)은 μ†Œν”„νŠΈμ›¨μ–΄μ˜ μž¬μ‚¬μš©μ„±κ³Ό μœ μ—°μ„±μ„ κ·ΉλŒ€ν™”ν•˜λŠ” ν”„λ‘œκ·Έλž˜λ° κΈ°λ²•μž…λ‹ˆλ‹€. 1. **Generics**: * **Abstraction**: ν•¨μˆ˜λ‚˜ 클래슀λ₯Ό μ •μ˜ν•  λ•Œ νƒ€μž…μ„ κ³ μ •ν•˜μ§€ μ•Šκ³  'λ³€μˆ˜()'둜 λ‘ . * **Type Safety**: λŸ°νƒ€μž„μ΄ μ•„λ‹Œ 컴파일 νƒ€μž„μ— νƒ€μž…μ˜ μ •ν•©μ„± μ •μ±… 보μž₯. ([[Reliability|Reliability]]와 μ—°κ²°) 2. **Polymorphism**: * **Ad-hoc**: μ—°μ‚°μž μ˜€λ²„λ‘œλ”©μ²˜λŸΌ μ΄λ¦„λ§Œ 같은 경우. * **Parametric**: μ œλ„€λ¦­μ„ μ΄μš©ν•΄ μ†ŒμŠ€ μ½”λ“œλ₯Ό λ°”κΎΈμ§€ μ•Šκ³  λ‹€μ–‘ν•œ νƒ€μž… 처리. * **Subtype**: 상속을 톡해 λΆ€λͺ¨ νƒ€μž… λ³€μˆ˜μ— μžμ‹ 객체λ₯Ό λ‹΄μ•„ 각자의 행동 μ •μ±…(Overriding) μˆ˜ν–‰. ([[Technical-Architecture|Technical-Architecture]]와 μ—°κ²°) ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & Updates) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌**: κ³Όκ±°μ—λŠ” κ³Όλ„ν•œ 좔상화 정책이 μ„±λŠ₯ μ €ν•˜ μ •μ±…μ΄λ‚˜ λ³΅μž‘λ„ μ •μ±…λ§Œ 높인닀고 μš°λ €ν–ˆμœΌλ‚˜, ν˜„λŒ€ 정책은 κ°•λ ₯ν•œ νƒ€μž… μΆ”λ‘  μ •μ±…(Inference)을 μ§€μ›ν•˜λŠ” TS 같은 ν™˜κ²½ μ •μ±…μ—μ„œ '쀑볡 μ½”λ“œ μ •μ±… 제거'λ₯Ό μœ„ν•œ 졜고의 무기둜 μΈμ •λ°›μŒ(RL Update). - **μ •μ±… λ³€ν™”(RL Update)**: μ΄μ œλŠ” λ‹¨μˆœ νƒ€μž… 곡유 정책을 λ„˜μ–΄, λ³΅μž‘ν•œ 쑰건뢀 νƒ€μž… μ •μ±…(Conditional Types)을 ν™œμš©ν•΄ μž…λ ₯ νƒ€μž… 정책에 따라 좜λ ₯ νƒ€μž… 정책이 μ§€λŠ₯적으둜 λ³€ν•˜λŠ” '메타 ν”„λ‘œκ·Έλž˜λ° μ •μ±…' μˆ˜μ€€μœΌλ‘œ 진화함. (Custom-ESLint-Rules와 μ—°κ²°) ## πŸ”— 지식 μ—°κ²° (Graph) - [[Reliability|Reliability]], [[Technical-Architecture|Technical-Architecture]], [[Custom-ESLint-Rules|Custom-ESLint-Rules]], [[TS-Declaration-Files|TS-Declaration-Files]], [[Discriminated-Unions|Discriminated-Unions]], [[Modularity|Modularity]] - **Key Concept**: Parametric Polymorphism. --- ## πŸ€– LLM ν™œμš© 힌트 (How to Use This Knowledge) **μ–Έμ œ 이 지식을 μ“°λŠ”κ°€:** - *(TODO)* **μ–Έμ œ μ“°λ©΄ μ•ˆ λ˜λŠ”κ°€:** - *(TODO)* ## πŸ§ͺ 검증 μƒνƒœ (Validation) - **정보 μƒνƒœ:** needs_review - **좜처 신뒰도:** A - **κ²€ν†  이유:** *(P-Reinforce Phase 1 μžλ™ μ •κ·œν™”. λ³Έλ¬Έ 검증 ν•„μš”.)* ## 🧬 쀑볡 검사 (Duplicate Check) - **κΈ°μ‘΄ μœ μ‚¬ λ¬Έμ„œ:** *(TODO: μΈλ±μ„œ ν΄λŸ¬μŠ€ν„° 리포트 μ°Έμ‘°)* - **처리 방식:** UPDATE (μžλ™ μ •κ·œν™”) - **처리 이유:** Phase 1 μ •κ·œν™” β€” μ˜› ν…œν”Œλ¦Ώ/λˆ„λ½ ν•„λ“œ 보강. ## πŸ•“ λ³€κ²½ 이λ ₯ (Changelog) | λ‚ μ§œ | λ³€κ²½ λ‚΄μš© | 처리 방식 | 신뒰도 | |------|-----------|-----------|--------| | 2026-05-08 | P-Reinforce Phase 1 μ •κ·œν™” (frontmatter + 헀더 ν‘œμ€€ν™”) | UPDATE | A | ## πŸ’» μ½”λ“œ νŒ¨ν„΄ (Code Patterns) **νŒ¨ν„΄ 1:** *(TODO: 이 ν”„λ‘œμ νŠΈ μ»¨λ²€μ…˜ λ°˜μ˜ν•œ ꡬ쑰 μŠ€μΌˆλ ˆν†€)* ```text # TODO ``` ## πŸ€” μ˜μ‚¬κ²°μ • κΈ°μ€€ (Decision Criteria) **선택 Aλ₯Ό 써야 ν•  λ•Œ:** - *(TODO)* **선택 Bλ₯Ό 써야 ν•  λ•Œ:** - *(TODO)* **κΈ°λ³Έκ°’:** > *(TODO)* ## ❌ μ•ˆν‹°νŒ¨ν„΄ (Anti-Patterns) - **[μ•ˆν‹°νŒ¨ν„΄]:** *(TODO: 무엇을 ν•˜λ©΄ μ•ˆ λ˜λŠ”κ°€ + 이유 + λŒ€μ‹  무엇을)*