--- id: P-REINFORCE-AUTO-BD62E2 category: "10_Wiki/๐Ÿ’ก Topics/Programming & Language" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - ์ดˆ๊ณผ ์†์„ฑ ๊ฒ€์‚ฌ (Excess Property Checking)" --- # [[แ„Žแ…ฉแ„€แ…ช แ„‰แ…ฉแ†จแ„‰แ…ฅแ†ผ แ„€แ…ฅแ†ทแ„‰แ…ก (Excess Property Checking)|์ดˆ๊ณผ ์†์„ฑ ๊ฒ€์‚ฌ (Excess Property Checking)]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > ์ดˆ๊ณผ ์†์„ฑ ๊ฒ€์‚ฌ(Excess Property Checking)๋Š” TypeScript์—์„œ ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด์„ ๋‹ค๋ฅธ ๋ณ€์ˆ˜์— ์ง์ ‘ ํ• ๋‹นํ•˜๊ฑฐ๋‚˜ ํ•จ์ˆ˜์˜ ์ธ์ˆ˜๋กœ ์ „๋‹ฌํ•  ๋•Œ, ์˜ˆ์ƒ์น˜ ๋ชปํ•œ(์ •์˜๋˜์ง€ ์•Š์€) ์†์„ฑ์ด ๊ฐ์ฒด์— ํฌํ•จ๋˜์–ด ์žˆ๋Š”์ง€ ๊ฐ์ง€ํ•˜์—ฌ ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค [1-5]. ์ด๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ์†์„ฑ ์ด๋ฆ„์— ์˜คํƒ€๋ฅผ ๋‚ด๊ฑฐ๋‚˜ ์ž˜๋ชป๋œ ์†์„ฑ์„ ์ „๋‹ฌํ•˜๋Š” ์‹ค์ˆ˜๋ฅผ ๋ฐฉ์ง€ํ•˜์—ฌ ์˜๋„์น˜ ์•Š์€ ๋Ÿฐํƒ€์ž„ ๋™์ž‘์„ ๋ง‰๊ธฐ ์œ„ํ•ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค [6-8]. ํ•˜์ง€๋งŒ ๊ฐ์ฒด๋ฅผ ์ค‘๊ฐ„ ๋ณ€์ˆ˜์— ๋จผ์ € ํ• ๋‹นํ•œ ํ›„ ์ „๋‹ฌํ•˜๋ฉด ๊ตฌ์กฐ์  ํƒ€์ดํ•‘์˜ ์›์น™์— ๋”ฐ๋ผ ์ด ๊ฒ€์‚ฌ๋ฅผ ์šฐํšŒํ•˜๊ฒŒ ๋˜๋Š” ํŠน์ง•์ด ์žˆ์Šต๋‹ˆ๋‹ค [6, 9, 10]. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) * **๋ฐœ๋™ ์กฐ๊ฑด ๋ฐ ๋ชฉ์ ** TypeScript๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์†์„ฑ์˜ ๊ตฌ์กฐ๋งŒ ๋งž์œผ๋ฉด ํƒ€์ž…์ด ํ˜ธํ™˜๋œ๋‹ค๊ณ  ๋ณด๋Š” ๊ตฌ์กฐ์  ํƒ€์ดํ•‘(Structural Typing) ์‹œ์Šคํ…œ์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค [11]. ๊ทธ๋Ÿฌ๋‚˜ ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด์ด ๋ณ€์ˆ˜์— ์ง์ ‘ ํ• ๋‹น๋˜๊ฑฐ๋‚˜ ์ธ์ˆ˜๋กœ ์ „๋‹ฌ๋˜๋Š” ํŠน์ˆ˜ํ•œ ์ƒํ™ฉ์—์„œ๋Š” TypeScript๊ฐ€ ๋” ์—„๊ฒฉํ•˜๊ฒŒ ๋™์ž‘ํ•˜์—ฌ ์ดˆ๊ณผ ์†์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค [1, 4, 6]. ์ด ๊ธฐ๋Šฅ์€ `color`๋ฅผ `colour`๋กœ ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ์˜คํƒ€๋ฅผ ์žก์•„๋‚ด๋ฉฐ, ํ•ด๋‹น ์ƒํ™ฉ์—์„œ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ดˆ๊ณผ ์†์„ฑ์„ ์˜๋„์ ์œผ๋กœ ์ „๋‹ฌํ•  ํ™•๋ฅ ์ด ๊ทนํžˆ ๋‚ฎ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์—ฌ ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ๋ฅผ ์‚ฌ์ „์— ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค [6-8]. * **๊ฒ€์‚ฌ์˜ ํ•œ๊ณ„ (์šฐํšŒ ๋ฉ”์ปค๋‹ˆ์ฆ˜)** ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด์„ ์ค‘๊ฐ„ ๋ณ€์ˆ˜์— ๋จผ์ € ํ• ๋‹นํ•œ ๋’ค ์ด๋ฅผ ๋‹ค๋ฅธ ๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜์— ์ „๋‹ฌํ•˜๋ฉด, ์ดˆ๊ณผ ์†์„ฑ ๊ฒ€์‚ฌ๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค [6, 9]. ๋‘ ๊ฐ์ฒด๊ฐ€ ์ตœ์†Œ ํ•˜๋‚˜ ์ด์ƒ์˜ ๊ณตํ†ต ์†์„ฑ๋งŒ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค๋ฉด "์ตœ์†Œ ์š”๊ฑด ์ถฉ์กฑ"์ด๋ผ๋Š” ๊ตฌ์กฐ์  ํƒ€์ดํ•‘ ์›์น™์ด ์ ์šฉ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค [6, 9, 10]. ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์€ JavaScript์˜ ์œ ์—ฐํ•œ ํŒจํ„ด์„ ์ง€์›ํ•˜์ง€๋งŒ, ๋™์‹œ์— ๋ถˆํ•„์š”ํ•˜๊ฑฐ๋‚˜ ์ž˜๋ชป๋œ ์†์„ฑ์ด ๋Ÿฐํƒ€์ž„์— ์œ ์ž…๋˜์–ด ๋ถ€์ž‘์šฉ(์˜ˆ: React ์ปดํฌ๋„ŒํŠธ์˜ ์˜๋„์น˜ ์•Š์€ ๋ฆฌ๋ Œ๋”๋ง, ์ž˜๋ชป๋œ DOM ์†์„ฑ ์ „๋‹ฌ)์„ ์ผ์œผํ‚ค๋Š” ์›์ธ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [10, 12]. * **์™„ํ™” ๋ฐ ๋ฐฉ์–ด ์ „๋žต** * **`satisfies` ์—ฐ์‚ฐ์ž์˜ ํ™œ์šฉ:** TypeScript 4.9์—์„œ ๋„์ž…๋œ `satisfies` ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ„์ ‘ ํ• ๋‹น ๊ณผ์ •์—์„œ๋„ ์—„๊ฒฉํ•œ ์†์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๊ตฌ์ฒด์ ์ธ ๊ฐ’(๋ฆฌํ„ฐ๋Ÿด ํƒ€์ž… ๋“ฑ)์„ ์œ ์ง€ํ•˜๋ฉด์„œ ๋Œ€์ƒ ํƒ€์ž…์— ์ •์˜๋˜์ง€ ์•Š์€ ์ดˆ๊ณผ ์†์„ฑ์ด ๋“ค์–ด์˜ค๋Š” ๊ฒƒ์„ ์›์ฒœ ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค [13, 14]. * **์ปค์Šคํ…€ ์ œ๋„ค๋ฆญ ํƒ€์ž… ํ™œ์šฉ:** ๋” ์—„๊ฒฉํ•œ ์ˆ˜๋™ ๊ฒ€์‚ฌ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ, ์ œ๋„ค๋ฆญ ๋งค๊ฐœ๋ณ€์ˆ˜(`T`)์™€ ์˜ˆ์ƒ ํƒ€์ž…(`Shape`)์„ ๋น„๊ตํ•˜์—ฌ ์˜ˆ์ƒ ํƒ€์ž…์— ์—†๋Š” ์†์„ฑ์„ `never` ํƒ€์ž…์œผ๋กœ ๊ฐ•์ œ ํ• ๋‹นํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [15, 16]. ์ค‘์ฒฉ๋œ ๊นŠ์€ ๊ฐ์ฒด ๊ตฌ์กฐ์— ๋Œ€ํ•ด์„œ๋Š” ์žฌ๊ท€์  ํƒ€์ž…์„ ํ™œ์šฉํ•ด ์ดˆ๊ณผ ์†์„ฑ์„ ๊ฐ์ง€ํ•ด๋ƒ…๋‹ˆ๋‹ค [17, 18]. * **๊ด€๋ จ ๋ฆฐํŠธ(Lint) ๊ทœ์น™ ์ œ์•ˆ** ๋ณ€์ˆ˜ ํ• ๋‹น ์‹œ์—๋„ ์ดˆ๊ณผ ์†์„ฑ ๊ฒ€์‚ฌ๊ฐ€ ๋ˆ„๋ฝ๋˜๋Š” ๊ฒƒ์„ ๋ง‰๊ธฐ ์œ„ํ•ด `eslint-plugin`์— `no-excess-properties`๋ผ๋Š” ๊ทœ์น™์ด ์ œ์•ˆ๋œ ๋ฐ” ์žˆ์Šต๋‹ˆ๋‹ค [19]. ๊ทธ๋Ÿฌ๋‚˜ TypeScript์—์„œ๋Š” ๋ชจ๋“  ๊ฐ์ฒด๊ฐ€ ๋ณธ์งˆ์ ์œผ๋กœ "๋ถ€์ •ํ™•์„ฑ(inexact)"์„ ํ—ˆ์šฉํ•˜๋Š” ๊ตฌ์กฐ์  ํƒ€์ดํ•‘์— ์˜์กดํ•˜๋ฉฐ, ๊ณผ์ž‰ ์†์„ฑ์ด ์‹ค์ œ ๋ฒ„๊ทธ๋กœ ์ด์–ด์ง€๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋“œ๋ฌผ๋‹ค๋Š” ์ , ๊ทธ๋ฆฌ๊ณ  ์ปค๋ฎค๋‹ˆํ‹ฐ์˜ ์ˆ˜์š”๊ฐ€ ๋ถ€์กฑํ•˜๋‹ค๋Š” ์  ๋•Œ๋ฌธ์— ํ•ด๋‹น ์ œ์•ˆ์€ ์ฑ„ํƒ๋˜์ง€ ์•Š๊ณ  ๋‹ซํ˜”์Šต๋‹ˆ๋‹ค [20-22]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Programming & Language ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** [[แ„€แ…ฎแ„Œแ…ฉแ„Œแ…ฅแ†จ แ„แ…กแ„‹แ…ตแ„‘แ…ตแ†ผ (Structural Typing)|๊ตฌ์กฐ์  ํƒ€์ดํ•‘ (Structural Typing)]], [[satisfies แ„‹แ…งแ†ซแ„‰แ…กแ†ซแ„Œแ…ก|satisfies ์—ฐ์‚ฐ์ž]] - **Projects/Contexts:** typescript-eslint - **Contradictions/Notes:** TypeScript๋Š” ๊ทผ๋ณธ์ ์œผ๋กœ ์†์„ฑ ์ง‘ํ•ฉ์˜ ํฌํ•จ ๊ด€๊ณ„๋งŒ ํ™•์ธํ•˜๋Š” '๊ตฌ์กฐ์  ํƒ€์ดํ•‘' ์›์น™์„ ๋”ฐ๋ฅด์ง€๋งŒ, ๊ฐ์ฒด ๋ฆฌํ„ฐ๋Ÿด์„ ์ง์ ‘ ๋‹ค๋ฃจ๋Š” ๋งฅ๋ฝ์—์„œ๋Š” ์ด๋Ÿฌํ•œ ์œ ์—ฐ์„ฑ์„ ์˜ˆ์™ธ์ ์œผ๋กœ ์ฐจ๋‹จํ•˜๊ณ  '์ดˆ๊ณผ ์†์„ฑ ๊ฒ€์‚ฌ'๋ผ๋Š” ๋” ์—„๊ฒฉํ•œ ์žฃ๋Œ€๋ฅผ ์ ์šฉํ•œ๋‹ค๋Š” ์ ์—์„œ ๋šœ๋ ทํ•œ ๋™์ž‘์˜ ๋Œ€๋น„๋ฅผ ๋ณด์ž…๋‹ˆ๋‹ค [1, 6, 11]. --- *Last updated: 2026-04-18* - Raw Source: 00_Raw/2026-04-20/์ดˆ๊ณผ ์†์„ฑ ๊ฒ€์‚ฌ (Excess Property Checking).md ---