Files
2nd/10_Wiki/Topics/Programming & Language/집합론(Set Theory).md
T

36 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
id: [[P-Reinforce]]-AUTO-1B9760
category: "10_Wiki/💡 Topics/Programming & Language"
confidence_score: 0.90
tags: [auto-reinforced]
last_reinforced: 2026-04-20
github_commit: "[P-Reinforce] Continuous Worker - 집합론(Set Theory)"
---
# [[집합론(Set Theory)]]
## 📌 한 줄 통찰 (The Karpathy Summary)
> 집합론(Set Theory)은 TypeScript의 타입 시스템을 이해하는 핵심적인 철학이자 접근 방식으로, 타입을 가능한 자바스크립트 값들의 '집합'으로 간주하는 개념입니다 [1, 2]. 이 관점을 통해 타입 간의 호환성, 합집합과 교집합 연산, 그리고 타입의 서브타입(Subtype) 및 슈퍼타입(Supertype) 관계를 수학적 집합의 원리로 명확하게 설명할 수 있습니다 [2-5].
## 📖 구조화된 지식 (Synthesized Content)
- **타입과 집합의 매핑 (Mapping Types to Sets)**: TypeScript에서 모든 타입은 자바스크립트 값들의 집합으로 이해될 수 있습니다 [1, 2]. 예를 들어, `string` 타입은 가능한 모든 문자열의 집합을 뜻하며, 특정 인터페이스 타입은 해당 구조를 만족하는 모든 객체의 집합입니다 [2]. 또한 `boolean``true``false` 단 두 개의 값만 포함하는 집합입니다 [5]. 세상의 모든 자바스크립트 값을 포함하는 전체 집합(Universe)은 `unknown` 타입에 해당하며, 아무런 값도 포함하지 않는 공집합(Empty Set, ∅)은 `never` 타입으로 대응됩니다 [1, 6, 7].
- **부분집합과 타입 호환성 (Subsets and Compatibility)**: 집합론에서 집합 A의 모든 요소가 집합 B에 포함될 때 A를 B의 부분집합이라고 정의합니다 [4]. 이를 TypeScript에 적용하면, 타입 A가 타입 B의 부분집합($A \subseteq B$)일 때 A는 B에 할당 가능한(assignable) 호환성을 가집니다 [2]. 즉, 서브타입(Subtype)은 부분집합(subset)으로, 슈퍼타입(Supertype)은 상위집합(superset)으로 이해할 수 있습니다 [5, 7]. 제네릭이나 조건부 타입에서 자주 사용되는 `A extends B` 문법 역시 "A가 B의 부분집합이다"라는 수학적 의미로 정확히 해석할 수 있습니다 [1, 7, 8].
- **집합 연산자 (Set [[Opera]]tors)**: TypeScript의 타입 조합 연산은 집합의 수학적 연산과 일치하게 동작합니다 [1, 7].
- **합집합(Union, )**: `|` 연산자로 표현되며, A 또는 B에 속한 모든 요소를 포함하는 집합을 만듭니다 [1, 4].
- **교집합(Intersection, ∩)**: `&` 연산자로 표현되며, A와 B 모두에 존재하는 요소를 포함하는 집합을 만듭니다 [1, 4].
- **차집합(Difference, \)**: TypeScript의 `Exclude<A, B>` 유틸리티 타입이 차집합과 근사하게 동작하여, A에는 있지만 B에는 없는 요소를 추출합니다 (단, 유니온 타입에서만 작동) [1, 4, 7].
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
- **정책 변화:** Programming & Language 분야의 자동 자산화 수행.
## 🔗 지식 연결 (Graph)
- **Related Topics:** TypeScript Type[[ system]], [[Structural Typing]], Union and Intersection Types
- **Projects/Contexts:** TypeScript Interface Design, Type Narrowing and Widening
- **Contradictions/Notes:** TypeScript의 `any` 타입은 집합론으로 완벽히 설명되지 않는 예외적인 존재입니다. 모든 세트를 부분집합으로 허용하면서도 동시에 스스로가 비어있을 수(`never`) 있는 '역설적인(paradoxical)' 집합으로 동작하기 때문에 일반적인 집합론의 논리를 따르지 않습니다 [7, 9].
---
*Last updated: 2026-04-18*
---