--- id: P-REINFORCE-AUTO-07CB26 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) > TypeScript์—์„œ ๋ถˆ๋ณ€์„ฑ(Immutability)์€ ์ฃผ๋กœ `readonly` ์ˆ˜์‹์–ด์™€ `Readonly` ์œ ํ‹ธ๋ฆฌํ‹ฐ ํƒ€์ž…์„ ํ†ตํ•ด ์ปดํŒŒ์ผ ํƒ€์ž„์— ๋ฐ์ดํ„ฐ๊ฐ€ ์˜๋„์น˜ ์•Š๊ฒŒ ๋ณ€๊ฒฝ๋˜๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๋Š” ํ•ต์‹ฌ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค [1-3]. ์ด๋ฅผ ํ†ตํ•ด ๊ฐ์ฒด์˜ ์†์„ฑ์ด๋‚˜ ๋ฐฐ์—ด ์š”์†Œ๊ฐ€ ์ดˆ๊ธฐํ™”๋œ ์ดํ›„์— ์ˆ˜์ •๋˜๋Š” ๊ฒƒ์„ ์—„๊ฒฉํžˆ ์ฐจ๋‹จํ•˜์—ฌ ๋ถ€์ž‘์šฉ์„ ์ค„์ด๊ณ  ํ•จ์ˆ˜ํ˜• ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจํ„ด์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค [1, 4]. ๋Ÿฐํƒ€์ž„์— ์„ฑ๋Šฅ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์œ ๋ฐœํ•˜๋Š” `Object.freeze()`์™€ ๋‹ฌ๋ฆฌ ์ปดํŒŒ์ผ ์‹œ์ ์—๋งŒ ์ž‘๋™ํ•˜๋ฏ€๋กœ, ์ œ๋กœ ๋Ÿฐํƒ€์ž„ ๋น„์šฉ์œผ๋กœ ๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ๊ฒƒ์ด ํŠน์ง•์ž…๋‹ˆ๋‹ค [1, 3, 5]. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) * **๋ถˆ๋ณ€์„ฑ ๊ตฌํ˜„ ๋ฉ”์ปค๋‹ˆ์ฆ˜ (`readonly`์™€ `Readonly`)** TypeScript์—์„œ๋Š” ๊ฐ์ฒด๋‚˜ ํด๋ž˜์Šค์˜ ์†์„ฑ, ๋ฐฐ์—ด ์ •์˜ ์‹œ `readonly` ์ˆ˜์‹์–ด๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์ดˆ๊ธฐํ™” ํ›„ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์„ ๊ธˆ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [1, 6, 7]. ๋˜ํ•œ, ๊ธฐ์กด ํƒ€์ž…์˜ ๋ชจ๋“  ์†์„ฑ์„ ์ฝ๊ธฐ ์ „์šฉ์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” `Readonly` ์œ ํ‹ธ๋ฆฌํ‹ฐ ํƒ€์ž…์„ ์ œ๊ณตํ•˜์—ฌ ์„ค์ • ๊ฐ์ฒด, API ์‘๋‹ต ๋ฐ์ดํ„ฐ, ์ƒํƒœ ๊ด€๋ฆฌ(๋ฆฌ๋“€์„œ) ๋“ฑ์„ ์•ˆ์ „ํ•˜๊ฒŒ ๋ณดํ˜ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค [2, 7, 8]. * **`const` ๋ฐ `Object.freeze()`์™€์˜ ์ฐจ์ด์ ** ๋ถˆ๋ณ€์„ฑ์„ ๊ฐ•์ œํ•˜๋Š” ๋ฐฉ์‹์— ์žˆ์–ด์„œ `const`, `Object.freeze()`, ๊ทธ๋ฆฌ๊ณ  `readonly`๋Š” ๋ช…ํ™•ํ•œ ์ฐจ์ด๋ฅผ ๋ณด์ž…๋‹ˆ๋‹ค. * **`const`**: ๋Ÿฐํƒ€์ž„์— ๋ณ€์ˆ˜ ์ž์ฒด์˜ ์žฌํ• ๋‹น์„ ๋ง‰์ง€๋งŒ, ๊ฐ์ฒด ๋‚ด๋ถ€ ์†์„ฑ์˜ ๋ณ€๊ฒฝ(Mutation)์€ ๋ง‰์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค [3, 5, 9]. * **`Object.freeze()`**: ๋Ÿฐํƒ€์ž„์— ๊ฐ์ฒด ์†์„ฑ ์ˆ˜์ •์„ ์ฐจ๋‹จํ•˜์ง€๋งŒ, ์–•์€(shallow) ๋™๊ฒฐ๋งŒ ์ง€์›ํ•˜๋ฉฐ ๋Ÿฐํƒ€์ž„ ์„ฑ๋Šฅ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค [3, 10]. * **`readonly`**: ์ปดํŒŒ์ผ ํƒ€์ž„์— ์†์„ฑ ์ ‘๊ทผ ๋ฐ ์ˆ˜์ •์„ ์ฐจ๋‹จํ•˜๋ฉฐ, ์ƒ์„ฑ๋œ JavaScript์—๋Š” ํ”์ ์ด ๋‚จ์ง€ ์•Š์•„ ๋Ÿฐํƒ€์ž„ ์„ฑ๋Šฅ ๋น„์šฉ์ด ์ „ํ˜€ ์—†์Šต๋‹ˆ๋‹ค [1, 3, 5]. * **์–•์€ ๋ถˆ๋ณ€์„ฑ(Shallow Immutability)๊ณผ ์—์ผ๋ฆฌ์–ด์‹ฑ(Aliasing)์˜ ํ•œ๊ณ„** TypeScript์˜ ๊ธฐ๋ณธ ๋ถˆ๋ณ€์„ฑ ๊ธฐ๋Šฅ์ธ `readonly`๋‚˜ `Readonly`๋Š” ๊ฐ์ฒด์˜ ์ตœ์ƒ์œ„ ์†์„ฑ๋งŒ ๋ณดํ˜ธํ•˜๋Š” ์–•์€ ์ˆ˜์ค€์˜ ๋ถˆ๋ณ€์„ฑ๋งŒ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค [11-13]. ๋” ํฐ ๋ฌธ์ œ์ ์€ '์—์ผ๋ฆฌ์–ด์‹ฑ(Aliasing)'์ž…๋‹ˆ๋‹ค. `readonly` ํƒ€์ž…์œผ๋กœ ๋ณดํ˜ธ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅํ•œ(mutable) ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๊ธฐ๋Œ€ํ•˜๋Š” ํ•จ์ˆ˜์— ์ „๋‹ฌ๋  ๊ฒฝ์šฐ, TypeScript๋Š” ์ด๋ฅผ ํ˜ธํ™˜๋˜๋Š” ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผํ•˜์—ฌ ์—๋Ÿฌ๋ฅผ ๋„์šฐ์ง€ ์•Š๊ณ , ํ•ด๋‹น ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ ์›๋ณธ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ณ€์ด๋  ์ˆ˜ ์žˆ๋Š” ์ทจ์•ฝ์ ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค [14, 15]. * **์žฌ๊ท€์  ๋ถˆ๋ณ€์„ฑ(Deep Readonly)์˜ ๊ตฌ์ถ•** ์ค‘์ฒฉ๋œ ๊ฐ์ฒด๋‚˜ ๋ฐฐ์—ด ๋‚ด๋ถ€ ๊นŠ์ˆ™ํ•œ ๊ณณ๊นŒ์ง€ ์™„๋ฒฝํ•˜๊ฒŒ ๋ถˆ๋ณ€์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ธฐ๋ณธ ๊ธฐ๋Šฅ๋งŒ์œผ๋กœ๋Š” ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค [12]. ์ด๋ฅผ ๊ทน๋ณตํ•˜๊ธฐ ์œ„ํ•ด ๋งคํ•‘ ํƒ€์ž…(Mapped Types)๊ณผ ์กฐ๊ฑด๋ถ€ ํƒ€์ž…(Conditional Types)์„ ๊ฒฐํ•ฉํ•˜์—ฌ ๋‚ด๋ถ€ ์†์„ฑ๊นŒ์ง€ ์žฌ๊ท€์ ์œผ๋กœ `readonly`๋ฅผ ์ ์šฉํ•˜๋Š” ์ปค์Šคํ…€ `DeepReadonly` ์œ ํ‹ธ๋ฆฌํ‹ฐ ํƒ€์ž…์„ ๊ตฌ์ถ•ํ•ด ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [12, 13, 16]. ์ด๋Š” ํŠธ๋ฆฌ ๊ตฌ์กฐ๋‚˜ ๋ณต์žกํ•œ ์ƒํƒœ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์—์„œ ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•˜๋Š” ๊ฐ•๋ ฅํ•œ ๋ฐฉํŒจ ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค [13]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Programming & Language ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** [[readonly แ„‰แ…ฎแ„‰แ…ตแ†จแ„‹แ…ฅ|readonly ์ˆ˜์‹์–ด]], [[Readonly แ„‹แ…ฒแ„แ…ตแ†ฏแ„…แ…ตแ„แ…ต แ„แ…กแ„‹แ…ตแ†ธ|Readonly ์œ ํ‹ธ๋ฆฌํ‹ฐ ํƒ€์ž…]], DeepReadonly (์žฌ๊ท€์  ๋ถˆ๋ณ€์„ฑ), [[แ„‹แ…ฆแ„‹แ…ตแ†ฏแ„…แ…ตแ„‹แ…ฅแ„‰แ…ตแ†ผ (Aliasing)|์—์ผ๋ฆฌ์–ด์‹ฑ (Aliasing)]], [[แ„€แ…ฎแ„Œแ…ฉแ„Œแ…ฅแ†จ แ„แ…กแ„‹แ…ตแ„‘แ…ตแ†ผ (Structural Typing)|๊ตฌ์กฐ์  ํƒ€์ดํ•‘ (Structural Typing)]] - **Projects/Contexts:** [[Redux แ„ƒแ…ณแ†ผ แ„‰แ…กแ†ผแ„แ…ข แ„€แ…ชแ†ซแ„…แ…ต (State Management)|Redux ๋“ฑ ์ƒํƒœ ๊ด€๋ฆฌ (State Management)]], API ์‘๋‹ต ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง, ๊ธ€๋กœ๋ฒŒ ์„ค์ • ๊ฐ์ฒด (Configuration Objects) ๋ณดํ˜ธ - **Contradictions/Notes:** TypeScript์˜ `readonly`๋Š” ์™„๋ฒฝํ•œ ๋Ÿฐํƒ€์ž„ ๋ถˆ๋ณ€์„ฑ์„ ์ œ๊ณตํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ ํƒ€์ž„์—๋งŒ ์œ ํšจํ•˜๋ฉฐ ์ปดํŒŒ์ผ ํ›„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ์—์„œ๋Š” ํ•ด๋‹น ์ œ์•ฝ์ด ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค [1]. ๋˜ํ•œ, ์—์ผ๋ฆฌ์–ด์‹ฑ์„ ํ†ตํ•ด `readonly` ๋ฐฐ์—ด์ด ์ผ๋ฐ˜ ๋ฐฐ์—ด ํƒ€์ž…์œผ๋กœ ์ทจ๊ธ‰๋  ๊ฒฝ์šฐ ํƒ€์ž… ์‹œ์Šคํ…œ์„ ์šฐํšŒํ•˜์—ฌ ๋ณ€์ด๊ฐ€ ์ผ์–ด๋‚  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํ•จ์ˆ˜ ์‹œ๊ทธ๋‹ˆ์ฒ˜ ์„ค๊ณ„ ์‹œ ์ฃผ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค [14, 15]. --- *Last updated: 2026-04-18* - Raw Source: 00_Raw/2026-04-20/๋ถˆ๋ณ€์„ฑ (Immutability).md ---