--- id: P-REINFORCE-AUTO-29E29A category: "10_Wiki/๐Ÿ’ก Topics/Programming & Language" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - ๊ธฐ๋ณธ ํƒ€์ž…์—์˜ ์ง‘์ฐฉ (Primitive Obsession)" --- # [[แ„€แ…ตแ„‡แ…ฉแ†ซ แ„แ…กแ„‹แ…ตแ†ธแ„‹แ…ฆแ„‹แ…ด แ„Œแ…ตแ†ธแ„Žแ…กแ†จ (Primitive Obsession)|๊ธฐ๋ณธ ํƒ€์ž…์—์˜ ์ง‘์ฐฉ (Primitive Obsession)]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > '๊ธฐ๋ณธ ํƒ€์ž…์—์˜ ์ง‘์ฐฉ(Primitive Obsession)'์€ ์„œ๋กœ ๋‹ค๋ฅธ ์˜๋ฏธ์™€ ๋งฅ๋ฝ์„ ์ง€๋‹Œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ๋ณ„ํ•˜์ง€ ์•Š๊ณ  ๋ฒ”์šฉ์ ์ธ ์›์‹œ ๊ธฐ๋ณธ ํƒ€์ž…(์˜ˆ: `string`, `number`)๋งŒ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ ค๋Š” ์•ˆํ‹ฐ ํŒจํ„ด์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค [1, 2]. TypeScript์™€ ๊ฐ™์€ ๊ตฌ์กฐ์  ํƒ€์ดํ•‘ ํ™˜๊ฒฝ์—์„œ๋Š” ์ด๋ฉ”์ผ ์ฃผ์†Œ์™€ ์ด๋ฆ„์ด ๋ชจ๋‘ `string`์œผ๋กœ ์ทจ๊ธ‰๋˜์–ด, ์˜๋„์น˜ ์•Š์€ ์ž˜๋ชป๋œ ๊ฐ’์ด ์ „๋‹ฌ๋˜๋”๋ผ๋„ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์˜ค๋ฅ˜๋ฅผ ์žก์•„๋‚ด์ง€ ๋ชปํ•˜๋Š” ์ทจ์•ฝ์ ์„ ๋ฐœ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค [2]. ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ณ  ํƒ€์ž…์˜ ์˜๋ฏธ์  ๊ฒฝ๊ณ„๋ฅผ ๋ช…ํ™•ํžˆ ํ•˜๊ธฐ ์œ„ํ•ด, ๋Ÿฐํƒ€์ž„์—๋Š” ๋™์ผํ•œ ์›์‹œ ๊ฐ’์ด์ง€๋งŒ ์ปดํŒŒ์ผ ๋‹จ๊ณ„์—์„œ๋Š” ์„œ๋กœ ๋‹ค๋ฅด๊ฒŒ ๊ตฌ๋ณ„๋˜๋„๋ก ๊ฐ•์ œํ•˜๋Š” ๋ธŒ๋žœ๋””๋“œ ํƒ€์ž…(Branded Types)์ด๋‚˜ ์˜คํŒจํฌ ํƒ€์ž…(Opaque Types) ๊ธฐ๋ฒ•์ด ํ•ด๊ฒฐ์ฑ…์œผ๋กœ ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค [2, 3]. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) * **๊ฐœ๋… ๋ฐ ์›์ธ** * ํ˜„๋Œ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ๋Š” ํ† ํฐ, ๋ฆฌ์†Œ์Šค ์‹๋ณ„์ž, ์ด๋ฒคํŠธ ์ด๋ฆ„ ๋“ฑ์„ ๋ชจ๋‘ `string`์œผ๋กœ ํƒ€์ดํ•‘ํ•˜๊ณ  ํ†ตํ™”, ํƒ€์ž„์Šคํƒฌํ”„, ๋‚ด๋ถ€ ์นด์šดํ„ฐ ๋“ฑ์„ ๋ชจ๋‘ `number`๋กœ ๋ญ‰๋šฑ๊ทธ๋ ค ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค [1]. * TypeScript์˜ ๊ตฌ์กฐ์  ํƒ€์ดํ•‘(Structural Typing)์€ ๊ฐ์ฒด์˜ ํ˜•ํƒœ๊ฐ€ ์ผ์น˜ํ•˜๋ฉด ๊ฐ™์€ ํƒ€์ž…์œผ๋กœ ๊ฐ„์ฃผํ•˜๋ฏ€๋กœ ์œ ์—ฐ์„ฑ์ด ๋†’์ง€๋งŒ, ์ด๋กœ ์ธํ•ด ์˜๋ฏธ์ ์œผ๋กœ ์ „ํ˜€ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ๋ชปํ•˜๋Š” '๊ธฐ๋ณธ ํƒ€์ž…์—์˜ ์ง‘์ฐฉ' ๋ฌธ์ œ๋ฅผ ๋ณธ์งˆ์ ์œผ๋กœ ์•ผ๊ธฐํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค [2]. * **๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์œ„ํ—˜์„ฑ** * **์‹๋ณ„ ๋ถˆ๊ฐ€๋Šฅ์„ฑ**: ํ•จ์ˆ˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉ์ž ID์™€ ๊ณ„์ • ID๋ฅผ ์ „๋‹ฌํ•  ๋•Œ ๋‘˜ ๋‹ค `string`์œผ๋กœ ํƒ€์ดํ•‘๋˜์–ด ์žˆ๋‹ค๋ฉด, ๋งค๊ฐœ๋ณ€์ˆ˜์˜ ์ˆœ์„œ๋ฅผ ์‹ค์ˆ˜๋กœ ๋ฐ”๊ฟ”์„œ ์ „๋‹ฌํ•ด๋„ TypeScript ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค์ง€ ์•Š์•„ ๋Ÿฐํƒ€์ž„ ๋ฒ„๊ทธ๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค [2, 3]. * **์—ญ์‚ฌ์  ์‹คํŒจ ์‚ฌ๋ก€**: ๋งˆ์Šค ํด๋ผ์ด๋ฉ”์ดํŠธ ์˜ค๋น„ํ„ฐ(Mars Climate Orbiter) ํ”„๋กœ์ ํŠธ๋Š” ๋‹จ์œ„๊ณ„(ํŒŒ์šด๋“œ-ํž˜ ์ดˆ vs ๋‰ดํ„ด-์ดˆ)๊ฐ€ ๋‹ค๋ฅธ ์ˆซ์ž๋ฅผ ๋‹จ์ˆœ ์›์‹œ ํƒ€์ž…์œผ๋กœ ํ˜ผ์šฉํ•˜์—ฌ ์—ฐ์‚ฐํ•˜๋‹ค๊ฐ€ ํƒ์‚ฌ์„ ์ด ํŒŒ๊ดด๋˜๋Š” ์น˜๋ช…์ ์ธ ์‹œ์Šคํ…œ ์‹คํŒจ๋ฅผ ๊ฒช๊ธฐ๋„ ํ–ˆ์Šต๋‹ˆ๋‹ค [4]. * **ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•๋ก ** * **๋ช…๋ชฉ์  ๊ตฌ๋ถ„์˜ ๋ถ€์—ฌ**: TypeScript๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ช…๋ชฉ์  ํƒ€์ดํ•‘(Nominal Typing)์„ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋‚˜, '์˜คํŒจํฌ ํƒ€์ž…(Opaque Types)' ๋˜๋Š” '๋ธŒ๋žœ๋””๋“œ ํƒ€์ž…(Branded Types)'์„ ๋„์ž…ํ•˜์—ฌ ์ด ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [5, 6]. * **๋ธŒ๋žœ๋”ฉ(Branding) ๊ธฐ๋ฒ•**: `unique symbol`์ด๋‚˜ ๊ณ ์œ  ์†์„ฑ(`__brand`)์„ ๊ธฐ์กด ์›์‹œ ํƒ€์ž…๊ณผ ๊ต์ง‘ํ•ฉ(`&`)์œผ๋กœ ์—ฎ์–ด ๋Ÿฐํƒ€์ž„ ๋ฐ์ดํ„ฐ ํ‘œํ˜„์—๋Š” ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์œผ๋ฉด์„œ ์ปดํŒŒ์ผ ์‹œ์ ์—๋งŒ ์กด์žฌํ•˜๋Š” ์—„๊ฒฉํ•œ ๊ณ ์œ  ํ‘œ์‹์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค [2, 6, 7]. * **๋ฐ์ดํ„ฐ ์˜ค์—ผ ์ฐจ๋‹จ**: ๋„๋ฉ”์ธ ๊ธฐ๋ฐ˜ ์„ค๊ณ„(DDD) ๊ด€์ ์—์„œ๋Š” ์ด ๊ธฐ๋ฒ•์„ ์ด์šฉํ•ด `UserId`์™€ `OrderId`๋ฅผ ์—„๊ฒฉํžˆ ๋ถ„๋ฆฌํ•˜๊ณ , ๋Ÿฐํƒ€์ž„ ๊ฒ€์ฆ์„ ํ†ต๊ณผํ•œ ๋ฐ์ดํ„ฐ(์˜ˆ: `SanitizedString`)๋งŒ์ด ์‹œ์Šคํ…œ์˜ ๋‚ด๋ถ€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์œผ๋กœ ์ง„์ž…ํ•˜๋„๋ก ๊ฐ•์ œํ•จ์œผ๋กœ์จ ๋ฐ์ดํ„ฐ๊ฐ€ ์˜ค์—ผ๋˜๋Š” ๊ฒƒ์„ ์›์ฒœ ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค [2, 8]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Programming & Language ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** [[แ„€แ…ฎแ„Œแ…ฉแ„Œแ…ฅแ†จ แ„แ…กแ„‹แ…ตแ„‘แ…ตแ†ผ (Structural Typing)|๊ตฌ์กฐ์  ํƒ€์ดํ•‘ (Structural Typing)]], [[แ„†แ…งแ†ผแ„†แ…ฉแ†จแ„Œแ…ฅแ†จ แ„แ…กแ„‹แ…ตแ„‘แ…ตแ†ผ (Nominal Typing)|๋ช…๋ชฉ์  ํƒ€์ดํ•‘ (Nominal Typing)]], [[แ„‡แ…ณแ„…แ…ขแ†ซแ„ƒแ…ตแ„ƒแ…ณ แ„แ…กแ„‹แ…ตแ†ธ (Branded Types)|๋ธŒ๋žœ๋””๋“œ ํƒ€์ž… (Branded Types)]], ์˜คํŒจํฌ ํƒ€์ž… (Opaque Types) - **Projects/Contexts:** [[แ„ƒแ…ฉแ„†แ…ฆแ„‹แ…ตแ†ซ แ„€แ…ตแ„‡แ…กแ†ซ แ„‰แ…ฅแ†ฏแ„€แ…จ (DDD)|๋„๋ฉ”์ธ ๊ธฐ๋ฐ˜ ์„ค๊ณ„ (DDD)]], ๋งˆ์Šค ํด๋ผ์ด๋ฉ”์ดํŠธ ์˜ค๋น„ํ„ฐ (Mars Climate Orbiter) - **Contradictions/Notes:** ๋ธŒ๋žœ๋””๋“œ ํƒ€์ž…๊ณผ ๊ฐ™์€ ํ•ด๊ฒฐ์ฑ…์€ ํ”„๋กœ๊ทธ๋žจ์˜ ์•ˆ์ „์„ฑ์„ ๋†’์ด๊ณ  '๊ธฐ๋ณธ ํƒ€์ž…์—์˜ ์ง‘์ฐฉ'์„ ํ•ด์†Œํ•ด ์ฃผ์ง€๋งŒ, ์ถ”๊ฐ€์ ์ธ ํƒ€์ž… ์ž‘์„ฑ ๋ฐ ๊ฐœ๋…์  ๋ณต์žก์„ฑ์ด ์ฆ๊ฐ€ํ•˜๋Š” ๋‹จ์ (๋น„์šฉ)์ด ์ˆ˜๋ฐ˜๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐœ๋ฐœํŒ€์€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‹ค์ œ๋กœ ์ง๋ฉดํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์€ ๋ฌธ์ œ์ธ์ง€ ๋“์‹ค์„ ํŒ๋‹จํ•˜์—ฌ ๋„์ž…ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์กฐ์–ธํ•ฉ๋‹ˆ๋‹ค [9, 10]. --- *Last updated: 2026-04-18* - Raw Source: 00_Raw/2026-04-20/๊ธฐ๋ณธ ํƒ€์ž…์—์˜ ์ง‘์ฐฉ (Primitive Obsession).md ---