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