--- id: [[P-Reinforce|P-Reinforce]]-AUTO-1F695C category: "10_Wiki/๐Ÿ’ก Topics/Programming & Language" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - ์žฌ๊ท€์  ๋ถˆ๋ณ€์„ฑ ([[DeepReadonly|DeepReadonly]])" --- # [[แ„Œแ…ขแ„€แ…ฑแ„Œแ…ฅแ†จ แ„‡แ…ฎแ†ฏแ„‡แ…งแ†ซแ„‰แ…ฅแ†ผ (DeepReadonly)|์žฌ๊ท€์  ๋ถˆ๋ณ€์„ฑ (Deepreadonly]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > ์žฌ๊ท€์  ๋ถˆ๋ณ€์„ฑ(DeepReadonly)์€ TypeScript์—์„œ ์ตœ์ƒ์œ„ ์†์„ฑ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ค‘์ฒฉ๋œ ๋‚ด๋ถ€ ๊ฐ์ฒด๊นŒ์ง€ ๋ชจ๋‘ ๋ถˆ๋ณ€(immutable) ์ƒํƒœ๋กœ ๋งŒ๋“œ๋Š” ์ปค์Šคํ…€ ์œ ํ‹ธ๋ฆฌํ‹ฐ ํƒ€์ž… ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค [1-3]. ๋‚ด์žฅ `Readonly` ํƒ€์ž…์ด๋‚˜ `readonly` ์ˆ˜์‹์–ด๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์–•์€(shallow) ์ˆ˜์ค€์˜ ๋ณดํ˜ธ ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด ๋งคํ•‘ ํƒ€์ž…๊ณผ ์กฐ๊ฑด๋ถ€ ํƒ€์ž…์„ ๊ฒฐํ•ฉํ•˜์—ฌ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค [1, 3-5]. ์ „์ฒด ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์˜ ๋ณ€๊ฒฝ์„ ๋ฐฉ์ง€ํ•˜์—ฌ ํŠธ๋ฆฌ ๊ตฌ์กฐ๋‚˜ ๋ณต์žกํ•œ ์ค‘์ฒฉ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๋Š” ์ƒํƒœ ๊ด€๋ฆฌ ๋ฐ ์„ค์ • ๊ฐ์ฒด ๋“ฑ์—์„œ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ๊ฐ•๋ ฅํ•œ ๋ฐฉ์–ด์ฑ… ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค [1, 3]. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) - **์–•์€ ๋ถˆ๋ณ€์„ฑ์˜ ํ•œ๊ณ„:** TypeScript์˜ ๋‚ด์žฅ `Readonly` ์œ ํ‹ธ๋ฆฌํ‹ฐ ํƒ€์ž…์ด๋‚˜ ๊ธฐ๋ณธ์ ์ธ `readonly` ์ˆ˜์‹์–ด๋Š” ๊ฐ์ฒด์˜ ์ตœ์ƒ์œ„(top-level) ์†์„ฑ๋งŒ ์ฝ๊ธฐ ์ „์šฉ์œผ๋กœ ๋งŒ๋“ ๋‹ค [1, 2, 5]. ์ด๋กœ ์ธํ•ด ์ค‘์ฒฉ๋œ ๊ฐ์ฒด(nested objects)๋‚˜ ๋ฐฐ์—ด์˜ ๊นŠ์€ ๋‚ด๋ถ€ ์†์„ฑ๋“ค์€ ์—ฌ์ „ํžˆ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ(mutable) ์ƒํƒœ๋กœ ๋‚จ์•„ ์˜ˆ๊ธฐ์น˜ ์•Š์€ ๋ฐ์ดํ„ฐ ์˜ค์—ผ์— ์ทจ์•ฝํ•ด์ง„๋‹ค [1, 2, 5]. - **DeepReadonly์˜ ๋™์ž‘ ์›๋ฆฌ:** ์ด๋Ÿฌํ•œ ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋“  ๋‚ด๋ถ€ ๊ณ„์ธต์„ ๋ณดํ˜ธํ•  ์ˆ˜ ์žˆ๋Š” `DeepReadonly` ์žฌ๊ท€์  ํƒ€์ž…(Recursive Type)์„ ์ •์˜ํ•œ๋‹ค [1, 2]. ์ด ํƒ€์ž…์€ ๋งคํ•‘ ํƒ€์ž…(Mapped Types)๊ณผ ์กฐ๊ฑด๋ถ€ ํƒ€์ž…(Conditional Types)์„ ๊ฒฐํ•ฉํ•˜์—ฌ ๊ตฌ์„ฑํ•˜๋ฉฐ, ๊ฐ์ฒด์˜ ํ”„๋กœํผํ‹ฐ๋ฅผ ์ˆœํšŒํ•˜๋ฉฐ ์ค‘์ฒฉ๋œ ๋ชจ๋“  ์†์„ฑ์— ์žฌ๊ท€์ ์œผ๋กœ `readonly`๋ฅผ ๊ฐ•์ œํ•˜์—ฌ ์ „์ฒด ๊ตฌ์กฐ๋ฅผ ๋™๊ฒฐ์‹œํ‚จ๋‹ค [1, 3]. - **๊ตฌํ˜„ ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์˜์กด์„ฑ:** `DeepReadonly`๋Š” ํ˜„์žฌ TypeScript ์–ธ์–ด์— ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‚ด์žฅ๋œ ์œ ํ‹ธ๋ฆฌํ‹ฐ ํƒ€์ž…์ด ์•„๋‹ˆ๋‹ค [6]. ๋”ฐ๋ผ์„œ ์‹œ์Šคํ…œ ๋ฌด๊ฒฐ์„ฑ์„ ์œ„ํ•ด ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ์žฌ๊ท€์  ํ—ฌํผ ํƒ€์ž…์„ ์ •์˜ํ•˜๊ฑฐ๋‚˜, `ts-essentials`์™€ ๊ฐ™์ด ์ด๋ฅผ ์ œ๊ณตํ•˜๋Š” ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์˜์กดํ•ด์•ผ ํ•œ๋‹ค [6]. ๋ฐ˜๋Œ€๋กœ ๋ถˆ๋ณ€์„ฑ์„ ํ•ด์ œํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” `Mutable` ํ—ฌํผ ํƒ€์ž…์„ ๋งŒ๋“ค์–ด ๋ชจ๋“  ์†์„ฑ์˜ `readonly`๋ฅผ ์ œ๊ฑฐํ•  ์ˆ˜๋„ ์žˆ๋‹ค [2, 7]. - **ํ•ต์‹ฌ ํ™œ์šฉ ์‚ฌ๋ก€:** ํŠธ๋ฆฌ ๊ตฌ์กฐ๋‚˜ ๋ณต์žกํ•œ ์ค‘์ฒฉ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ๋‹จ ํ•˜๋‚˜์˜ ์†์„ฑ๋„ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋„๋ก ๋ณด์žฅํ•œ๋‹ค [1, 3]. ์ƒ์„ฑ ํ›„ ๊ตฌ์กฐ๊ฐ€ ์ˆ˜์ •๋˜์–ด์„œ๋Š” ์•ˆ ๋˜๋Š” ์„ค์ • ๊ฐ์ฒด(Configuration objects), ์ƒํƒœ ๊ด€๋ฆฌ ์•„ํ‚คํ…์ฒ˜, ๊ทธ๋ฆฌ๊ณ  ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์ด ์น˜๋ช…์ ์œผ๋กœ ์ค‘์š”ํ•œ ๊ธˆ์œต ์‹œ์Šคํ…œ ๋“ฑ์—์„œ ํ•„์ˆ˜์ ์ธ ๋ณดํ˜ธ ์š”์†Œ๋กœ ์ž๋ฆฌ ์žก๊ณ  ์žˆ๋‹ค [1, 3, 8]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Programming & Language ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** [[Readonly แ„‹แ…ฒแ„แ…ตแ†ฏแ„…แ…ตแ„แ…ต แ„แ…กแ„‹แ…ตแ†ธ|Readonly]], ๋งคํ•‘ ํƒ€์ž… (Mapped Types), ์กฐ๊ฑด๋ถ€ ํƒ€์ž… (Conditional Types), ์œ ํ‹ธ๋ฆฌํ‹ฐ ํƒ€์ž… (Utility Types) - **Projects/Contexts:** ts-essentials, ํ”„๋ก ํŠธ์—”๋“œ ์ƒํƒœ ๊ด€๋ฆฌ ([[State|State]] [[Management|Management]]), ์„ค์ • ๊ฐ์ฒด (Configuration objects) - **Contradictions/Notes:** `Readonly`๋Š” ๊ธฐ๋ณธ ์ œ๊ณต๋˜๋‚˜ `DeepReadonly`๋Š” TypeScript์— ๋‚ด์žฅ๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๋Š” ์ ์ด ํŠน์ง•์ž…๋‹ˆ๋‹ค [6]. ๋˜ํ•œ ๋Ÿฐํƒ€์ž„์— ์„ฑ๋Šฅ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ผ์œผํ‚ค๋Š” `Object.freeze()`์˜ ์–•์€ ๋™๊ฒฐ๊ณผ ๋‹ฌ๋ฆฌ, ์ด ๋ฐฉ์‹์€ ์ปดํŒŒ์ผ ํƒ€์ž„์— ํƒ€์ž… ๋ ˆ๋ฒจ์—์„œ๋งŒ ๋ถˆ๋ณ€์„ฑ์„ ๊ฒ€์‚ฌํ•˜๊ณ  ๊ฐ•์ œํ•˜๋ฏ€๋กœ ํ›จ์”ฌ ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค [5]. --- *Last updated: 2026-04-18* ---