--- id: [[P-Reinforce|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|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|Excess Property Checking]])' ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค[1, 3, 11]. ๋”๋ถˆ์–ด ๊ตฌ์กฐ๊ฐ€ ๊ฐ™์œผ๋‚˜ ์˜๋ฏธ๋ก ์ ์œผ๋กœ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฅผ ์—„๊ฒฉํžˆ ๋ถ„๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ณ ์œ ํ•œ ํ‘œ์‹์„ ๋ถ€์—ฌํ•˜๋Š” '๋ธŒ๋žœ๋””๋“œ ํƒ€์ž…(Branded Types)'๊ณผ ๊ฐ™์€ ๋ช…๋ชฉ์  ํƒ€์ดํ•‘ ๊ธฐ๋ฒ•์„ ์ฐจ์šฉํ•ด ์ˆ˜๋น„๋ ฅ์„ ๋†’์ž…๋‹ˆ๋‹ค[9, 12]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Programming & Language ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** ๋ช…๋ชฉ์  ํƒ€์ดํ•‘, ๋• ํƒ€์ดํ•‘, ๊ณผ์ž‰ ์†์„ฑ ์ฒดํฌ, ๋ธŒ๋žœ๋””๋“œ ํƒ€์ž… - **Projects/Contexts:** TypeScript ํƒ€์ž… ์‹œ์Šคํ…œ ์„ค๊ณ„, [[แ„ƒแ…ฉแ„†แ…ฆแ„‹แ…ตแ†ซ แ„€แ…ตแ„‡แ…กแ†ซ แ„‰แ…ฅแ†ฏแ„€แ…จ (DDD)|๋„๋ฉ”์ธ ๊ธฐ๋ฐ˜ ์„ค๊ณ„(DDD]] - **Contradictions/Notes:** ์†Œ์Šค์— ๋”ฐ๋ฅด๋ฉด ๊ตฌ์กฐ์  ํƒ€์ดํ•‘์€ TypeScript์— ๊ฐ•๋ ฅํ•œ ์œ ์—ฐ์„ฑ์„ ๋ถ€์—ฌํ•˜๋Š” ๊ทผ๊ฐ„์ด์ง€๋งŒ, ๋™์‹œ์— ์˜๋ฏธ๋ก ์ ์œผ๋กœ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ๋ณ„ํ•˜์ง€ ๋ชปํ•˜๊ฑฐ๋‚˜ ๋ถˆํ•„์š”ํ•œ ์†์„ฑ์ด ์„ž์—ฌ ๋“ค์–ด์˜ค๋Š” ๊ตฌ์กฐ์  ์ทจ์•ฝ์ ์„ ์ง€๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ณผ์ž‰ ์†์„ฑ ์ฒดํฌ๋‚˜ ๋ธŒ๋žœ๋””๋“œ ํƒ€์ž…๊ณผ ๊ฐ™์€ ์ถ”๊ฐ€์ ์ธ ๋ฐฉ์–ด ์ „๋žต์ด ๋ฐ˜๋“œ์‹œ ๋™๋ฐ˜๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค[1, 3, 9]. --- *Last updated: 2026-04-18* ---