--- id: P-REINFORCE-AUTO-5FB09F 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]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > DeepReadonlyλŠ” TypeScriptμ—μ„œ 객체의 λͺ¨λ“  μ€‘μ²©λœ ν”„λ‘œνΌν‹°μ— μž¬κ·€μ μœΌλ‘œ `readonly`λ₯Ό μ μš©ν•˜μ—¬ 데이터 ꡬ쑰 전체λ₯Ό μ™„μ „ν•œ λΆˆλ³€(immutable) μƒνƒœλ‘œ λ§Œλ“œλŠ” μ‚¬μš©μž μ •μ˜ μœ ν‹Έλ¦¬ν‹° νƒ€μž…μ΄λ‹€ [1, 2]. κΈ°λ³Έ λ‚΄μž₯된 `Readonly` μœ ν‹Έλ¦¬ν‹°κ°€ 객체의 μ΅œμƒμœ„ μ†μ„±λ§Œ λ³΄ν˜Έν•˜λŠ” 얕은(shallow) λΆˆλ³€μ„±λ§Œμ„ μ œκ³΅ν•œλ‹€λŠ” ν•œκ³„λ₯Ό κ·Ήλ³΅ν•˜κΈ° μœ„ν•΄ κ³ μ•ˆλ˜μ—ˆλ‹€ [1-3]. μƒνƒœ κ΄€λ¦¬λ‚˜ μ„€μ • 객체와 같이, 객체 생성 이후 λ‚΄λΆ€μ˜ 단 ν•˜λ‚˜μ˜ 속성도 μˆ˜μ •λ˜μ§€ μ•Šμ•„μ•Ό 함을 μ—„κ²©ν•˜κ²Œ 보μž₯ν•΄μ•Ό ν•  λ•Œ 주둜 μ‚¬μš©λœλ‹€ [1, 4]. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) - **얕은 λΆˆλ³€μ„±μ˜ ν•œκ³„ 극볡:** TypeScriptκ°€ 기본으둜 μ œκ³΅ν•˜λŠ” `Readonly` νƒ€μž…μ€ 객체의 μ΅œμƒμœ„ μˆ˜μ€€(top-level) ν”„λ‘œνΌν‹°λ§Œ 읽기 μ „μš©μœΌλ‘œ μ œμ–΄ν•œλ‹€ [1, 2]. λ”°λΌμ„œ λ‚΄λΆ€μ˜ μ€‘μ²©λœ κ°μ²΄λŠ” μ—¬μ „νžˆ μˆ˜μ • κ°€λŠ₯ν•œ μƒνƒœλ‘œ λ‚¨κ²Œ λ˜μ–΄ 데이터 μ˜€μ—Όμ˜ μœ„ν—˜μ΄ μ‘΄μž¬ν•˜λŠ”λ°, κΉŠμ€ μˆ˜μ€€μ˜ λΆˆλ³€μ„±μ„ κ°•μ œν•˜κΈ° μœ„ν•΄μ„œλŠ” `DeepReadonly` νƒ€μž…μ΄ ν•„μš”ν•˜λ‹€ [1-3]. - **μž¬κ·€μ  κ΅¬ν˜„ 방식:** `DeepReadonly`λŠ” λ§€ν•‘ νƒ€μž…(Mapped Types)κ³Ό 쑰건뢀 νƒ€μž…(Conditional Types)을 κ²°ν•©ν•˜μ—¬ μž¬κ·€μ μœΌλ‘œ μ •μ˜λœλ‹€ [4]. 일반적으둜 `type DeepReadonly = { readonly [P in keyof T]: DeepReadonly };`와 같은 ν˜•νƒœλ‘œ μž‘μ„±λ˜μ–΄, μ€‘μ²©λœ 데이터 트리 ꡬ쑰의 λͺ¨λ“  ν•˜μœ„ 속성에 `readonly` μˆ˜μ‹μ–΄κ°€ 빠짐없이 μ μš©λ˜λ„λ‘ λ§Œλ“ λ‹€ [1, 2, 4]. - **적용 및 κ°€μš©μ„±:** 이 νƒ€μž…μ€ 데이터 무결성을 μ΅œμš°μ„ μœΌλ‘œ ν•˜λŠ” ν”„λ‘ νŠΈμ—”λ“œ μ•„ν‚€ν…μ²˜λ‚˜ λ³΅μž‘ν•œ μ‹œμŠ€ν…œμ—μ„œ 예기치 μ•Šμ€ 데이터 변경을 μ°¨λ‹¨ν•˜λŠ” κ°•λ ₯ν•œ 방패 역할을 μˆ˜ν–‰ν•œλ‹€ [4]. ν•˜μ§€λ§Œ `DeepReadonly`λŠ” ν˜„μž¬ TypeScript μ–Έμ–΄ μžμ²΄μ— λ‚΄μž₯λ˜μ–΄ μžˆμ§€ μ•Šλ‹€ [5]. λ”°λΌμ„œ κ°œλ°œμžκ°€ ν”„λ‘œμ νŠΈ λ‚΄μ—μ„œ 직접 μž¬κ·€μ  μœ ν‹Έλ¦¬ν‹° νƒ€μž…μ„ μ„ μ–Έν•˜κ±°λ‚˜, `ts-essentials`와 같이 이λ₯Ό μ œκ³΅ν•˜λŠ” μ„œλ“œνŒŒν‹° 라이브러리λ₯Ό 가져와 μ‚¬μš©ν•΄μ•Ό ν•œλ‹€ [5]. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & RL Update) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** μžλ™ν™” 엔진에 μ˜ν•΄ λ§€ν•‘λœ μ§€μ‹μœΌλ‘œ, μΆ”ν›„ μ •λ°€ 검증 ν•„μš”. - **μ •μ±… λ³€ν™”:** Programming & Language λΆ„μ•Όμ˜ μžλ™ μžμ‚°ν™” μˆ˜ν–‰. ## πŸ”— 지식 μ—°κ²° (Graph) - **Related Topics:** [[readonly]], Readonly, Mapped Types, Conditional Types - **Projects/Contexts:** [[μƒνƒœ 관리(State Management)]], μ„€μ • 객체(Configuration Objects), ts-essentials - **Contradictions/Notes:** κΉŠμ€ μˆ˜μ€€μ˜ λΆˆλ³€μ„±μ„ 보μž₯ν•˜λŠ” κΈ°λŠ₯이 μ‹€λ¬΄μ μœΌλ‘œ 널리 μš”κ΅¬λ˜μ—ˆμŒμ—λ„ λΆˆκ΅¬ν•˜κ³  `DeepReadonly`λŠ” TypeScript에 κ³΅μ‹μ μœΌλ‘œ κΈ°λ³Έ λ‚΄μž₯λ˜μ–΄ μžˆμ§€ μ•Šλ‹€λŠ” 점이 νŠΉμ§•μ μ΄λ‹€ [5]. 이둜 인해 좔가적인 κ΅¬ν˜„μ΄λ‚˜ μ™ΈλΆ€ 라이브러리 μ˜μ‘΄μ„±μ΄ μš”κ΅¬λœλ‹€ [5]. --- *Last updated: 2026-04-18* ---