4.4 KiB
id, category, confidence_score, tags, last_reinforced, github_commit
| id | category | confidence_score | tags | last_reinforced | github_commit | |
|---|---|---|---|---|---|---|
| P-REINFORCE-AUTO-B0B7AB | 10_Wiki/💡 Topics/Programming & Language | 0.90 |
|
2026-04-20 | [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