Files
2nd/Programming & Language/교집합 타입 (Intersection Types).md
T

3.3 KiB

id, category, confidence_score, tags, last_reinforced, github_commit
id category confidence_score tags last_reinforced github_commit
P-REINFORCE-AUTO-795BA0 10_Wiki/💡 Topics/Programming & Language 0.90
auto-reinforced
2026-04-20 [P-Reinforce] Continuous Worker - 교집합 타입 (Intersection Types)

교집합 타입 (Intersection Types)

📌 한 줄 통찰 (The Karpathy Summary)

지식 요약 정보 추출 중...

📖 구조화된 지식 (Synthesized Content)

  • 기본 개념 및 동작 원리: 교집합 타입은 다수의 타입을 결합하여 하나의 타입으로 만듭니다. 예를 들어, Person & Serializable & Loggable 타입의 객체는 이 세 가지 타입이 가진 모든 멤버를 포함하게 됩니다 [1]. 집합론적 관점에서 & 연산자는 단순한 객체 형태의 결합이 아니라 '값 집합(value sets)'의 교집합을 의미하며, 결합된 모든 제약 조건을 동시에 만족하는 대상들의 집합을 나타냅니다 [4].
  • 인터페이스 확장(Interface Extends)과의 비교 및 성능: TypeScript는 객체 타입을 결합하거나 확장할 때 교집합 타입보다 인터페이스의 extends 기능을 사용하는 것을 권장합니다 [6, 7]. 인터페이스는 단일한 평면 객체 타입을 생성하고 그 이름을 기반으로 관계를 캐싱하여 컴파일 성능을 최적화합니다 [6, 8-10]. 반면, 교집합 타입은 사용될 때마다 매번 구조를 재귀적으로 병합하고 평가해야 하므로 대규모 프로젝트에서는 컴파일 속도 저하의 원인이 될 수 있습니다 [6, 10].
  • 타입 충돌 처리의 차이점: 두 타입을 결합할 때 호환되지 않는 속성이 존재하는 경우, 인터페이스 상속은 개발자에게 명시적인 에러를 발생시켜 실수를 방지합니다 [9, 11]. 반면 교집합 타입은 충돌하는 속성을 조용히 처리하여, 그 결과로 절대 존재할 수 없는 never 타입을 생성해버리는 특징이 있습니다 [9, 11].
  • 실용적 활용: 교집합 타입은 여러 출처에서 기능을 모아와야 할 때 유용합니다. 예를 들어 일관된 에러 처리 타입을 기존의 특정 네트워크 응답 타입에 결합하거나, User 타입에 AdminPermissions 속성을 더해 AdminUser를 생성하는 식의 모델링에 사용됩니다 [3, 12].

⚠️ 모순 및 업데이트 (Contradictions & RL Update)

  • 과거 데이터와의 충돌: 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
  • 정책 변화: Programming & Language 분야의 자동 자산화 수행.

🔗 지식 연결 (Graph)

  • Related Topics: 유니언 타입 (Union Types), 인터페이스 (Interfaces), 구조적 타이핑 (Structural Typing)
  • Projects/Contexts: TypeScript 컴파일러 성능 최적화, 객체 타입 조합 및 확장
  • Contradictions/Notes: 교집합 타입(&)은 유연하게 여러 객체를 결합할 수 있는 수단이지만, 성능 최적화와 명시적 충돌 에러 감지의 이점 때문에 TypeScript 공식 가이드나 성능 가이드라인에서는 가능한 경우 인터페이스 확장(extends)을 더 우선적으로 사용할 것을 권장합니다 [6, 7, 9].

Last updated: 2026-04-18

  • Raw Source: 00_Raw/2026-04-20/교집합 타입 (Intersection Types).md