3.9 KiB
3.9 KiB
id, category, confidence_score, tags, last_reinforced, github_commit
| id | category | confidence_score | tags | last_reinforced | github_commit | |
|---|---|---|---|---|---|---|
| P-REINFORCE-AUTO-4A5E0E | 10_Wiki/💡 Topics/Programming & Language | 0.90 |
|
2026-04-20 | [P-Reinforce] Continuous Worker - 타입 서술어(Type Predicates) |
타입 서술어(Type Predicates)
📌 한 줄 통찰 (The Karpathy Summary)
타입 서술어(Type Predicates)는 함수의 반환 타입을 통해 특정 매개변수가 특정 타입에 해당하는지 여부를 타입스크립트 컴파일러에 알려주는 함수입니다 [1]. 런타임에는 불리언(boolean) 값을 반환하지만, 타입 시스템은 이 반환 값을 바탕으로 타입 좁히기(Type Narrowing)를 적용합니다 [1]. 개발자는
is키워드를 활용해 커스텀 타입 가드(Type Guard)를 정의할 때 이 기능을 핵심적으로 사용합니다 [2].
📖 구조화된 지식 (Synthesized Content)
- 구문 및 동작 원리:
타입 서술어는 함수의 반환 타입 자리에
매개변수명 is 특정타입의 구문을 사용하여 정의합니다 [1, 2]. 예를 들어function isPercentage(x: number): x is Percentage와 같이 작성하면, 이 함수가true를 반환할 때 타입스크립트는 매개변수x를 명시된Percentage타입으로 좁혀서 인식합니다 [3]. 이를 통해if문과 같은 조건부 블록 내부에서 해당 타입임이 보장된 상태로 코드를 작성할 수 있습니다 [1]. - 주요 활용 시나리오: 유니언 타입(Union Types)으로 묶인 여러 타입 중 특정 타입을 안전하게 구분해내야 할 때 유용하게 쓰입니다 [2]. 또한, 런타임 검사 함수에 적용되어 특정 값이 브랜디드 타입(Branded Types) 또는 불투명 타입(Opaque Types)의 인스턴스로 취급될 수 있는지 검증하고 타입 시스템과 연결하는 다리 역할을 합니다 [1, 3, 4].
- 안정성의 한계:
타입 서술어는 마법처럼 모든 타입 오류를 막아주지는 않습니다. 타입스크립트 컴파일러는 타입 서술어 내부의 실제 로직이 해당 타입의 의도와 정확히 일치하는지까지는 검사하지 않습니다 [1]. 따라서 이는 근본적으로
as타입 단언(Type Assertion)과 유사한 수준의 타입 안정성을 가지며, 로직의 정확성은 전적으로 코드를 작성하는 개발자에게 달려 있습니다 [1]. - 사용 시의 단점 및 보완:
as단언문에 비해if조건문 래퍼(wrapper)를 의무적으로 작성해야 하므로 코드가 차지하는 공간이 늘어나고 런타임 로직이 추가된다는 단점이 있습니다 [5]. 이러한 가독성 저하를 해결하기 위해, 조건이 맞지 않으면 에러를 던져버리는 타입 단언 함수(Type Assertion Functions)를 타입 서술어와 결합하여 코드를 간결하게 구성하기도 합니다 [5, 6].
⚠️ 모순 및 업데이트 (Contradictions & RL Update)
- 과거 데이터와의 충돌: 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
- 정책 변화: Programming & Language 분야의 자동 자산화 수행.
🔗 지식 연결 (Graph)
- Related Topics: 타입 좁히기(Type Narrowing), 타입 가드(Type Guards), 브랜디드 타입(Branded Types), 타입 단언(Type Assertions)
- Projects/Contexts: 타입스크립트 애플리케이션의 런타임 값 검증 및 커스텀 타입 보장 구조 설계
- Contradictions/Notes: 타입 서술어는 타입을 좁혀주는 훌륭한 도구이지만, 그 자체로 내부 로직의 무결성을 타입스크립트가 검증해 주지 않기 때문에 개발자가 검증 로직을 잘못 작성하면
as단언처럼 타입 시스템에 치명적인 거짓 정보(타입 오류)를 제공할 위험이 있습니다 [1].
Last updated: 2026-04-18
- Raw Source: 00_Raw/2026-04-20/타입 서술어(Type Predicates).md