--- id: P-REINFORCE-AUTO-C4763A category: "[[10_Wiki/πŸ’‘ Topics/Programming & Language]]" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - λŒ€κ·œλͺ¨ TypeScript ν”„λ‘œμ νŠΈμ˜ 컴파일 μ„±λŠ₯ μ΅œμ ν™”" --- # [[λŒ€κ·œλͺ¨ TypeScript ν”„λ‘œμ νŠΈμ˜ 컴파일 μ„±λŠ₯ μ΅œμ ν™”]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > λŒ€κ·œλͺ¨ TypeScript ν”„λ‘œμ νŠΈμ˜ 컴파일 μ„±λŠ₯을 μ΅œμ ν™”ν•˜λ €λ©΄ λ³΅μž‘ν•œ νƒ€μž… 연산을 쀄이고 컴파일러의 캐싱 λŠ₯λ ₯을 κ·ΉλŒ€ν™”ν•΄μ•Ό ν•©λ‹ˆλ‹€ [1-3]. 특히 ꡬ쑰λ₯Ό 맀번 μž¬ν‰κ°€ν•΄μ•Ό ν•˜λŠ” ꡐ집합(`&`) νƒ€μž… λŒ€μ‹  μΈν„°νŽ˜μ΄μŠ€ ν™•μž₯(`extends`)을 μš°μ„ μ μœΌλ‘œ μ‚¬μš©ν•˜μ—¬ 평탄화(flattening) μ˜€λ²„ν—€λ“œλ₯Ό λ°©μ§€ν•˜λŠ” 것이 κ°€μž₯ 핡심적인 μ„±λŠ₯ ν–₯상 μ „λž΅μž…λ‹ˆλ‹€ [3, 4]. λ”λΆˆμ–΄ κ³Όλ„ν•˜κ²Œ λ³΅μž‘ν•œ μœ λ‹ˆμ˜¨ νƒ€μž…μ΄λ‚˜, 호좜 μ‹œμ λ§ˆλ‹€ λΆ€κ°€ 정보λ₯Ό μΆ”μ ν•˜λŠ” μ œλ„€λ¦­ νƒ€μž…μ˜ μ‚¬μš©μ„ μ΅œμ†Œν™”ν•˜μ—¬ 컴파일 속도 μ €ν•˜λ₯Ό 막아야 ν•©λ‹ˆλ‹€ [5, 6]. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) - **μΈν„°νŽ˜μ΄μŠ€ ν™•μž₯을 ν†΅ν•œ 캐싱 μ΅œμ ν™”:** `type` μ„ μ–Έκ³Ό ꡐ집합 μ—°μ‚°μž(`&`)λ₯Ό μ‚¬μš©ν•œ νƒ€μž… 병합은 λŒ€κ·œλͺ¨ ν”„λ‘œμ νŠΈμ—μ„œ 컴파일 μ„±λŠ₯을 μ €ν•˜μ‹œν‚¬ 수 μžˆμŠ΅λ‹ˆλ‹€ [4]. ꡐ집합 νƒ€μž…μ€ μ‚¬μš©ν•  λ•Œλ§ˆλ‹€ μž¬κ·€μ μœΌλ‘œ 속성을 λ³‘ν•©ν•˜κ³  계산해야 ν•˜μ§€λ§Œ, μΈν„°νŽ˜μ΄μŠ€λŠ” 단일 ν‰νƒ„ν™”λœ 객체 νƒ€μž…μ„ μƒμ„±ν•˜λ©° ν•΄λ‹Ή 이름(μΊμ‹œ)을 μ°Έμ‘°ν•˜μ—¬ νƒ€μž… 관계λ₯Ό νŒŒμ•…ν•©λ‹ˆλ‹€ [2, 3, 7]. λ”°λΌμ„œ 핡심 도메인 λͺ¨λΈμ΄λ‚˜ API 계약 λ“±μ—μ„œλŠ” μΈν„°νŽ˜μ΄μŠ€μ˜ `extends`λ₯Ό μ‚¬μš©ν•˜λŠ” 것이 νƒ€μž… 검사 μ„±λŠ₯ ν–₯상 및 IDE μ—…λ°μ΄νŠΈ 속도 μ΅œμ ν™”μ— μœ λ¦¬ν•©λ‹ˆλ‹€ [4, 8, 9]. - **μœ λ‹ˆμ˜¨(Union) νƒ€μž…μ˜ λ³΅μž‘μ„± 관리:** νŒλ³„ κ°€λŠ₯ν•œ μœ λ‹ˆμ˜¨(Discriminated Unions)κ³Ό 같은 νŒ¨ν„΄μ€ ν›Œλ₯­ν•œ νƒ€μž… μ•ˆμ „μ„±μ„ μ œκ³΅ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ λŒ€κ·œλͺ¨ μ½”λ“œλ² μ΄μŠ€μ—μ„œ μœ λ‹ˆμ˜¨ νƒ€μž…μ˜ ν˜•νƒœκ°€ λ„ˆλ¬΄ λ³΅μž‘ν•˜κ²Œ κ΅¬μ„±λ˜λ©΄ TypeScript 컴파일 속도λ₯Ό 느리게 λ§Œλ“œλŠ” μ£Όμš” 원인이 될 수 μžˆμŠ΅λ‹ˆλ‹€ [5]. - **무거운 μ œλ„€λ¦­ 및 μΆ”κ°€ νƒ€μž… 검사 λ„κ΅¬μ˜ μ‹ μ€‘ν•œ μ‚¬μš©:** μž‰μ—¬ 속성(Excess property)을 μ—„κ²©ν•˜κ²Œ κ°μ§€ν•˜κΈ° μœ„ν•΄ μ œλ„€λ¦­ λ§€κ°œλ³€μˆ˜λ₯Ό ν™œμš©ν•˜μ—¬ λͺ¨λ“  호좜 μœ„μΉ˜(call site)μ—μ„œ 좔가적인 νƒ€μž… 정보λ₯Ό μΆ”μ ν•˜λŠ” 기법이 μžˆμŠ΅λ‹ˆλ‹€ [6]. 이 기법은 κ°•λ ₯ν•˜μ§€λ§Œ νƒ€μž… 검사 μ„±λŠ₯에 뢀정적인 영ν–₯을 λ―ΈμΉ  수 μžˆμœΌλ―€λ‘œ μ‹ μ€‘νžˆ μ‚¬μš©ν•΄μ•Ό ν•˜λ©°, μ˜μ‹¬μŠ€λŸ¬μšΈ 경우 TypeScript ν”„λ‘œμ νŠΈμ— λŒ€ν•œ μ„±λŠ₯ ν”„λ‘œνŒŒμΌλ§(profiling)을 거쳐야 ν•©λ‹ˆλ‹€ [6]. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & RL Update) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** μžλ™ν™” 엔진에 μ˜ν•΄ λ§€ν•‘λœ μ§€μ‹μœΌλ‘œ, μΆ”ν›„ μ •λ°€ 검증 ν•„μš”. - **μ •μ±… λ³€ν™”:** Programming & Language λΆ„μ•Όμ˜ μžλ™ μžμ‚°ν™” μˆ˜ν–‰. ## πŸ”— 지식 μ—°κ²° (Graph) - **Related Topics:** [[μΈν„°νŽ˜μ΄μŠ€ ν™•μž₯ (Interface Extends)]], [[ꡐ집합 νƒ€μž… (Intersection Types)]], [[νƒ€μž… 캐싱 (Type Caching)]], [[νŒλ³„ κ°€λŠ₯ν•œ μœ λ‹ˆμ˜¨ (Discriminated Unions)]] - **Projects/Contexts:** [[λŒ€κ·œλͺ¨ μ½”λ“œλ² μ΄μŠ€ (Large Codebases)]], [[νƒ€μž… 검사 및 IDE μ„±λŠ₯ μ΅œμ ν™” (Type Checking and IDE Performance)]] - **Contradictions/Notes:** μ˜λ„μΉ˜ μ•Šμ€ μ„ μ–Έ 병합(Declaration Merging)의 μœ„ν—˜μ„± λ•Œλ¬Έμ— λ§Žμ€ 싀무 νŒ€λ“€μ΄ μΈν„°νŽ˜μ΄μŠ€ λŒ€μ‹  `type`λ§Œμ„ μ‚¬μš©ν•˜λŠ” μ»¨λ²€μ…˜μ„ μ„ ν˜Έν•˜κΈ°λ„ ν•˜μ§€λ§Œ [10], TypeScript의 컴파일 및 μ„±λŠ₯ κ°€μ΄λ“œλΌμΈ μΈ‘λ©΄μ—μ„œλŠ” ꡐ집합(`&`) λŒ€μ‹  μΈν„°νŽ˜μ΄μŠ€ ν™•μž₯(`extends`)을 μ‚¬μš©ν•˜λŠ” 것이 ꢌμž₯되고 μžˆμŠ΅λ‹ˆλ‹€ [3, 4]. --- *Last updated: 2026-04-18* - Raw Source: [[00_Raw/2026-04-20/λŒ€κ·œλͺ¨ TypeScript ν”„λ‘œμ νŠΈμ˜ 컴파일 μ„±λŠ₯ μ΅œμ ν™”.md]] ---