--- id: P-REINFORCE-AUTO-B0B7AB category: "[[10_Wiki/πŸ’‘ Topics/Programming & Language]]" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - λ¦¬ν„°λŸ΄ νƒ€μž… (Literal Types)" --- # [[λ¦¬ν„°λŸ΄ νƒ€μž… (Literal Types)]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > λ¦¬ν„°λŸ΄ νƒ€μž…(Literal Types)은 `string`μ΄λ‚˜ `number`와 같은 λ²”μš©μ μΈ μ›μ‹œ νƒ€μž… λŒ€μ‹ , κ°œλ°œμžκ°€ 미리 μ •μ˜ν•œ μ •ν™•ν•˜κ³  ꡬ체적인 κ°’(예: νŠΉμ • λ¬Έμžμ—΄, νŠΉμ • 숫자 λ“±)λ§Œμ„ ν—ˆμš©ν•˜λŠ” νƒ€μž…μž…λ‹ˆλ‹€. 단일 κ°’μœΌλ‘œ κ΅¬μ„±λ˜λŠ” 이 νƒ€μž…μ€ 주둜 μœ λ‹ˆμ˜¨ νƒ€μž…(Union Types)κ³Ό κ²°ν•©λ˜μ–΄ ν—ˆμš©λ˜λŠ” κ°’μ˜ λ²”μœ„λ₯Ό μ—„κ²©ν•˜κ²Œ μ œν•œν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€. 특히 식별 κ°€λŠ₯ν•œ μœ λ‹ˆμ˜¨(Discriminated Unions) νŒ¨ν„΄μ˜ 핡심 μš”μ†Œλ‘œ μž‘μš©ν•˜μ—¬, μ»΄νŒŒμΌλŸ¬κ°€ νƒ€μž…μ˜ λ²”μœ„λ₯Ό μ•ˆμ „ν•˜κ²Œ 쒁히고(Narrowing) 예츑 κ°€λŠ₯ν•œ μ½”λ“œλ₯Ό μž‘μ„±ν•  수 μžˆλ„λ‘ λ•μŠ΅λ‹ˆλ‹€. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) * **μ •μ˜μ™€ κΈ°λ³Έ νŠΉμ§•:** λ¦¬ν„°λŸ΄ νƒ€μž…μ€ λ³€μˆ˜λ‚˜ λ§€κ°œλ³€μˆ˜κ°€ κ°€μ§ˆ 수 μžˆλŠ” 값을 사전에 μ •μ˜λœ μ •ν™•ν•œ μƒμˆ˜λ‘œ μ œν•œν•©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, λΆˆλ¦¬μ–Έ κ°’ `true`와 `false`λŠ” 각각 단일 κ°’μœΌλ‘œ 이루어진 λ¦¬ν„°λŸ΄ νƒ€μž…μ΄λ©°, `const str: 'hi' = 'hi';`와 같이 νŠΉμ • λ¬Έμžμ—΄ μ—­μ‹œ κ³ μœ ν•œ λ¦¬ν„°λŸ΄ νƒ€μž…μœΌλ‘œ μ·¨κΈ‰λ©λ‹ˆλ‹€ [1-3]. * **μœ λ‹ˆμ˜¨ νƒ€μž…(Union Types)과의 κ²°ν•©:** λ¦¬ν„°λŸ΄ νƒ€μž…μ€ λ‹¨λ…μœΌλ‘œ 쓰일 λ•ŒλŠ” 단일 κ°’λ§Œμ„ ν—ˆμš©ν•˜μ§€λ§Œ, μœ λ‹ˆμ˜¨ νƒ€μž…κ³Ό κ²°ν•©ν•  λ•Œ κ·Έ κ°•λ ₯함이 λ“œλŸ¬λ‚©λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ `"loading" | "failed" | "success"`처럼 μ—¬λŸ¬ λ¦¬ν„°λŸ΄ νƒ€μž…μ„ νŒŒμ΄ν”„(`|`)둜 μ—°κ²°ν•˜μ—¬, 였직 μ •μ˜λœ λͺ©λ‘μ— μ†ν•˜λŠ” κ°’λ§Œμ„ μ•ˆμ „ν•˜κ²Œ ν—ˆμš©ν•˜λ„λ‘ 섀계할 수 μžˆμŠ΅λ‹ˆλ‹€ [3-5]. * **식별 κ°€λŠ₯ν•œ μœ λ‹ˆμ˜¨(Discriminated Unions)의 핡심 μ—­ν• :** λ¦¬ν„°λŸ΄ νƒ€μž…μ€ μ„œλ‘œ λ‹€λ₯Έ ꡬ쑰λ₯Ό κ°€μ§„ μ—¬λŸ¬ νƒ€μž…λ“€μ„ μ•ˆμ „ν•˜κ²Œ κ΅¬λΆ„ν•˜λŠ” 데 ν•„μˆ˜μ μœΌλ‘œ μ‚¬μš©λ©λ‹ˆλ‹€. μ—¬λŸ¬ νƒ€μž…μ΄ κ³΅μœ ν•˜λŠ” 곡톡 속성(예: `kind: "circle" | "square"`)을 λ¦¬ν„°λŸ΄ νƒ€μž…μœΌλ‘œ μ •μ˜ν•˜λ©΄, 이 속성이 'μ‹λ³„μž(Discriminator)' 역할을 ν•©λ‹ˆλ‹€. λŸ°νƒ€μž„μ—μ„œ `switch` λ¬Έ 등을 톡해 이 λ¦¬ν„°λŸ΄ 값을 λΉ„κ΅ν•¨μœΌλ‘œμ¨, TypeScriptλŠ” ν˜„μž¬ 처리 쀑인 객체가 μ •ν™•νžˆ μ–΄λ–€ νƒ€μž…μΈμ§€ μžλ™μœΌλ‘œ μ’ν˜€(Narrowing) μ•ˆμ „ν•œ 접근을 보μž₯ν•©λ‹ˆλ‹€ [4-6]. * **λ¦¬ν„°λŸ΄ νƒ€μž… 보쑴 및 ν™•μž₯(Widening) λ°©μ§€:** TypeScriptλŠ” ꡬ체적인 λ¦¬ν„°λŸ΄ 값을 더 넓은 λ²”μ£Όμ˜ μ›μ‹œ νƒ€μž…μœΌλ‘œ ν™•μž₯(Widening)ν•˜μ—¬ μΆ”λ‘ ν•˜λŠ” κ²½ν–₯이 μžˆμŠ΅λ‹ˆλ‹€(예: νŠΉμ • λ¬Έμžμ—΄μ„ λ‹¨μˆœ `string` νƒ€μž…μœΌλ‘œ μΆ”λ‘ ). * 객체λ₯Ό μ •μ˜ν•  λ•Œ μ΄λŸ¬ν•œ ν™•μž₯을 막고 본래의 μ •λ°€ν•œ λ¦¬ν„°λŸ΄ νƒ€μž…μ„ λ³΄μ‘΄ν•˜κΈ° μœ„ν•΄ `satisfies` μ—°μ‚°μžλ₯Ό ν™œμš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. 이λ₯Ό 톡해 객체의 ꡬ쑰가 쑰건을 λ§Œμ‘±ν•˜λŠ”μ§€ κ²€μ¦ν•˜λ©΄μ„œλ„ μ†μ„±λ“€μ˜ ꡬ체적인 λ¦¬ν„°λŸ΄ νƒ€μž…μ„ κ·ΈλŒ€λ‘œ μœ μ§€ν•  수 μžˆμŠ΅λ‹ˆλ‹€ [7-9]. * λ˜ν•œ, `as const` 단언(Assertion)을 μ‚¬μš©ν•˜λ©΄ 값을 κΉŠμ€ 읽기 μ „μš©(deeply readonly) μƒνƒœλ‘œ λ§Œλ“€λ©΄μ„œ, μ»΄νŒŒμΌλŸ¬κ°€ ν•΄λ‹Ή 값을 μ›μ‹œ νƒ€μž…μ΄ μ•„λ‹Œ μ •ν™•ν•œ λ¦¬ν„°λŸ΄ κ°’μœΌλ‘œ μ’νžˆλ„λ‘ κ°•μ œν•  수 μžˆμŠ΅λ‹ˆλ‹€ [10]. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & RL Update) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** μžλ™ν™” 엔진에 μ˜ν•΄ λ§€ν•‘λœ μ§€μ‹μœΌλ‘œ, μΆ”ν›„ μ •λ°€ 검증 ν•„μš”. - **μ •μ±… λ³€ν™”:** Programming & Language λΆ„μ•Όμ˜ μžλ™ μžμ‚°ν™” μˆ˜ν–‰. ## πŸ”— 지식 μ—°κ²° (Graph) - **Related Topics:** [[μœ λ‹ˆμ˜¨ νƒ€μž… (Union Types)]], [[식별 κ°€λŠ₯ν•œ μœ λ‹ˆμ˜¨ (Discriminated Unions)]], [[νƒ€μž… 쒁히기 (Type Narrowing)]], [[satisfies μ—°μ‚°μž]], [[as const 단언]] - **Projects/Contexts:** [[λ„€νŠΈμ›Œν¬ 응닡 μƒνƒœ λͺ¨λΈλ§ (loading, success, failed μƒνƒœ ꡬ뢄)]], [[Redux μ•‘μ…˜ 및 API 응닡 처리 νŒ¨ν„΄]] - **Contradictions/Notes:** λ¦¬ν„°λŸ΄ νƒ€μž… μžμ²΄λŠ” λ‹¨μΌν•œ κ°’λ§Œμ„ ν—ˆμš©ν•˜κΈ°μ— κ·Έ 자체둜만 쓰이면 μ œν•œμ μ΄μ§€λ§Œ, μœ λ‹ˆμ˜¨ νƒ€μž… 및 `satisfies`, `as const` 와 같은 TypeScript의 κ³ κΈ‰ κΈ°λŠ₯λ“€κ³Ό κ²°ν•©ν•  λ•Œ λΉ„λ‘œμ†Œ 예츑 λΆˆκ°€λŠ₯ν•œ λŸ°νƒ€μž„ 였λ₯˜λ₯Ό 막아주고 μžλ™ μ™„μ„±(IntelliSense)을 κ·ΉλŒ€ν™”ν•˜λŠ” 컴파일 νƒ€μž„μ˜ 핡심 μ•ˆμ „μž₯치둜 μž‘λ™ν•©λ‹ˆλ‹€. --- *Last updated: 2026-04-18* - Raw Source: [[00_Raw/2026-04-20/λ¦¬ν„°λŸ΄ νƒ€μž… (Literal Types).md]] ---