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