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