--- id: P-REINFORCE-AUTO-647D86 category: "10_Wiki/๐Ÿ’ก Topics/Programming & Language" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - ๋ถˆ๋ณ€์„ฑ(Immutability)" --- # [[แ„‡แ…ฎแ†ฏแ„‡แ…งแ†ซแ„‰แ…ฅแ†ผ(Immutability)|๋ถˆ๋ณ€์„ฑ(Immutability)]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > ๋ถˆ๋ณ€์„ฑ(Immutability)์€ ์ดˆ๊ธฐํ™” ์ดํ›„ ๊ฐ์ฒด์˜ ์†์„ฑ์ด๋‚˜ ๋ฐฐ์—ด ์š”์†Œ์™€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์˜ˆ๊ธฐ์น˜ ์•Š๊ฒŒ ์ˆ˜์ •๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๋Š” ๊ฐœ๋…์ด๋‹ค [1, 2]. TypeScript์—์„œ๋Š” ์ฃผ๋กœ `readonly` ์ˆ˜์‹์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋Ÿฐํƒ€์ž„ ์˜ค๋ฒ„ํ—ค๋“œ ์—†์ด ์ปดํŒŒ์ผ ํƒ€์ž„์— ์„ ์–ธ์ ์œผ๋กœ ๋ถˆ๋ณ€์„ฑ์„ ๊ฐ•์ œํ•œ๋‹ค [2-4]. ์ด๋Š” ์˜๋„์น˜ ์•Š์€ ์ƒํƒœ ๋ณ€๊ฒฝ์ด๋‚˜ ๋ฐ์ดํ„ฐ ์˜ค์—ผ์„ ์‚ฌ์ „์— ๋ฐฉ์ง€ํ•˜์—ฌ ์ฝ”๋“œ์˜ ์˜ˆ์ธก ๊ฐ€๋Šฅ์„ฑ์„ ๋†’์ด๊ณ  ๋ฒ„๊ทธ๋ฅผ ์ค„์ด๋Š” ๋ฐ ํ•„์ˆ˜์ ์ธ ์—ญํ• ์„ ํ•œ๋‹ค [4, 5]. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) * **๋ถˆ๋ณ€์„ฑ์˜ ์›๋ฆฌ์™€ ์žฅ์ ** ๋Ÿฐํƒ€์ž„์— ๋™์ž‘ํ•˜๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ `Object.freeze()`์™€ ๋‹ฌ๋ฆฌ, TypeScript์˜ `readonly`๋ฅผ ํ™œ์šฉํ•œ ๋ถˆ๋ณ€์„ฑ ๊ตฌํ˜„์€ ๋Ÿฐํƒ€์ž„ ์„ฑ๋Šฅ ๋น„์šฉ ์—†์ด ์ปดํŒŒ์ผ ์‹œ์ ์˜ ๊ตฌ์กฐ์  ํƒ€์ž… ์ฒดํฌ๋ฅผ ํ†ตํ•ด ์˜ค๋ฅ˜๋ฅผ ์ฐพ์•„๋‚ธ๋‹ค [4, 6]. ์ด๋Š” ๋ฐฉ์–ด์  ์ฝ”๋”ฉ์„ ์ค„์—ฌ์ฃผ๋ฉฐ, ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒํƒœ ๊ด€๋ฆฌ์™€ ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจํ„ด์„ ํšจ๊ณผ์ ์œผ๋กœ ์ง€์›ํ•œ๋‹ค [1, 4, 7]. ๋˜ํ•œ, `const`๊ฐ€ ๋ณ€์ˆ˜์˜ ์žฌํ• ๋‹น๋งŒ์„ ๋ง‰๋Š” ๊ฒƒ์— ๋ฐ˜ํ•ด `readonly`๋Š” ์ฐธ์กฐ๋œ ๊ฐ์ฒด ๋‚ด๋ถ€์˜ ์ฝ˜ํ…์ธ  ์ž์ฒด๋ฅผ ๋™๊ฒฐ์‹œํ‚จ๋‹ค๋Š” ์ ์—์„œ ๋ช…ํ™•ํžˆ ๊ตฌ๋ณ„๋œ๋‹ค [6, 8]. * **TypeScript์—์„œ์˜ ๊ตฌํ˜„ ๋ฐฉ๋ฒ•** * **๊ฐ์ฒด ๋ฐ ๋ฐฐ์—ด ๋ณดํ˜ธ:** ํด๋ž˜์Šค๋‚˜ ์ธํ„ฐํŽ˜์ด์Šค ๋‚ด ์†์„ฑ์— `readonly` ํ‚ค์›Œ๋“œ๋ฅผ ์„ ์–ธํ•˜๊ฑฐ๋‚˜, ๋ฐฐ์—ด์— `readonly T[]` ๋˜๋Š” `ReadonlyArray`๋ฅผ ์ง€์ •ํ•˜๋ฉด ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฉ”์„œ๋“œ(`push`, `pop` ๋“ฑ)์˜ ์‚ฌ์šฉ์ด ํƒ€์ž… ์‹œ์Šคํ…œ์—์„œ ์™„์ „ํžˆ ์ œ๊ฑฐ๋œ๋‹ค [9, 10]. * **์–•์€(Shallow) ๋ถˆ๋ณ€์„ฑ๊ณผ ๊นŠ์€(Deep) ๋ถˆ๋ณ€์„ฑ:** ๋‚ด์žฅ๋œ `Readonly` ์œ ํ‹ธ๋ฆฌํ‹ฐ๋‚˜ ๊ธฐ๋ณธ `readonly` ํ‚ค์›Œ๋“œ๋Š” ๊ฐ์ฒด์˜ ์ตœ์ƒ์œ„ ์†์„ฑ๋งŒ ๋ณดํ˜ธํ•˜๋Š” ์–•์€ ์ˆ˜์ค€์˜ ๋ถˆ๋ณ€์„ฑ์„ ์ œ๊ณตํ•˜๋ฏ€๋กœ, ์ค‘์ฒฉ๋œ ํ•˜์œ„ ๊ฐ์ฒด์˜ ๋ณ€๊ฒฝ์€ ๋ง‰์ง€ ๋ชปํ•œ๋‹ค [1, 11, 12]. ์ค‘์ฒฉ ๋ฐ์ดํ„ฐ ํŠธ๋ฆฌ์˜ ์™„๋ฒฝํ•œ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋งคํ•‘ ํƒ€์ž…(Mapped Types)๊ณผ ์กฐ๊ฑด๋ถ€ ํƒ€์ž…(Conditional Types)์„ ๊ฒฐํ•ฉํ•˜์—ฌ ์žฌ๊ท€์ ์œผ๋กœ ๋™์ž‘ํ•˜๋Š” `DeepReadonly` ์œ ํ‹ธ๋ฆฌํ‹ฐ ํƒ€์ž…์„ ๊ตฌ์ถ•ํ•ด์•ผ ํ•œ๋‹ค [11, 12]. * **`as const` ๋‹จ์–ธ:** ๊ฐ์ฒด๋‚˜ ๋ฐฐ์—ด ์„ ์–ธ ์‹œ `as const`๋ฅผ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜๋ฉด ๋ณ€์ˆ˜๋ฅผ ๋ฆฌํ„ฐ๋Ÿด ํƒ€์ž…์œผ๋กœ ์ขํžˆ๋Š” ๋™์‹œ์— ๊นŠ์€(deep) ์ฝ๊ธฐ ์ „์šฉ ์ƒํƒœ๋ฅผ ๋ถ€์—ฌํ•  ์ˆ˜ ์žˆ๋‹ค [13, 14]. * **์ฃผ์˜์  ๋ฐ ํ•œ๊ณ„์  (Aliasing ์ทจ์•ฝ์„ฑ)** `readonly`๋Š” ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ํ•ด๋‹น ์ฐธ์กฐ๋ฅผ ํ†ตํ•œ ์ง์ ‘์ ์ธ ์ˆ˜์ •์„ ๋ง‰์•„์ค„ ๋ฟ, ๋ณ€์ด๊ฐ€ ํ—ˆ์šฉ๋œ ๋‹ค๋ฅธ ๋ณ€์ˆ˜๋‚˜ ๋งค๊ฐœ๋ณ€์ˆ˜(๋ณ„์นญ, Alias)๋กœ ๊ฐ’์ด ์ „๋‹ฌ๋  ๊ฒฝ์šฐ์—๋Š” `readonly` ๋ณด์žฅ์ด ์ƒ์‹ค๋˜์–ด ์›๋ณธ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๋Š” ์ทจ์•ฝ์ ์ด ์žˆ๋‹ค [15, 16]. ๋”ฐ๋ผ์„œ ์—„๊ฒฉํ•œ ๋ถˆ๋ณ€์„ฑ์„ ์œ ์ง€ํ•˜๋ ค๋ฉด ํ•จ์ˆ˜ ์„œ๋ช… ๋‹จ๊ณ„์—์„œ๋ถ€ํ„ฐ ์ผ๊ด€๋˜๊ฒŒ `readonly` ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๊ฐ•์ œํ•˜๋„๋ก ์„ค๊ณ„ํ•ด์•ผ ํ•œ๋‹ค [16, 17]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Programming & Language ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** [[readonly|readonly]], [[DeepReadonly|DeepReadonly]], [[as const|as const]], [[แ„€แ…ฎแ„Œแ…ฉแ„Œแ…ฅแ†จ แ„แ…กแ„‹แ…ตแ„‘แ…ตแ†ผ(Structural Typing)|๊ตฌ์กฐ์  ํƒ€์ดํ•‘(Structural Typing)]] - **Projects/Contexts:** [[แ„‰แ…กแ†ผแ„แ…ข แ„€แ…ชแ†ซแ„…แ…ต(State Management)|์ƒํƒœ ๊ด€๋ฆฌ(State Management)]], [[TypeScript แ„แ…กแ„‹แ…ตแ†ธ แ„‰แ…ตแ„‰แ…ณแ„แ…ฆแ†ท แ„†แ…ตแ†พ แ„‹แ…ตแ†ซแ„แ…ฅแ„‘แ…ฆแ„‹แ…ตแ„‰แ…ณ แ„‰แ…ฅแ†ฏแ„€แ…จ|TypeScript ํƒ€์ž… ์‹œ์Šคํ…œ ๋ฐ ์ธํ„ฐํŽ˜์ด์Šค ์„ค๊ณ„]] - **Contradictions/Notes:** ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ `Object.freeze()`๋Š” ๋Ÿฐํƒ€์ž„์— ์ง์ ‘ ๊ฐ์ฒด๋ฅผ ๋™๊ฒฐํ•˜์—ฌ ๋ณดํ˜ธํ•˜์ง€๋งŒ ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๋™๋ฐ˜๋˜๋Š” ๋ฐ˜๋ฉด, TypeScript์˜ `readonly`๋Š” ๋Ÿฐํƒ€์ž„ ์„ฑ๋Šฅ ์ €ํ•˜๋Š” ์—†์œผ๋‚˜ ํƒ€์ž… ํ˜ธํ™˜์„ฑ์„ ์•…์šฉํ•œ ์šฐํšŒ(Aliasing) ๋ณ€ํ˜•๊นŒ์ง€๋Š” ์™„๋ฒฝํžˆ ์ฐจ๋‹จํ•˜์ง€ ๋ชปํ•œ๋‹ค๋Š” ํ•œ๊ณ„๋ฅผ ์ง€๋‹Œ๋‹ค [4, 6, 15, 18]. --- *Last updated: 2026-04-18* - Raw Source: 00_Raw/2026-04-20/๋ถˆ๋ณ€์„ฑ(Immutability).md ---