[G1-Sync] Manual knowledge update

This commit is contained in:
Antigravity Agent
2026-04-30 22:42:02 +09:00
parent 0bd4f19e38
commit c36c0644a1
4888 changed files with 18470 additions and 18602 deletions
@@ -1,5 +1,5 @@
---
id: P-REINFORCE-AUTO-5B3851
id: [[P-Reinforce]]-AUTO-5B3851
category: "10_Wiki/💡 Topics/Programming & Language"
confidence_score: 0.90
tags: [auto-reinforced]
@@ -14,10 +14,10 @@ github_commit: "[P-Reinforce] Continuous Worker - satisfies Keyword"
## 📖 구조화된 지식 (Synthesized Content)
* **도입 배경 및 핵심 기능:** 기존 TypeScript에서는 변수에 타입 어노테이션(`:`)을 지정하면 특정한 문자열 리터럴 값이 포괄적인 `string` 타입 등으로 넓혀지는 문제(Widening)가 발생했습니다[4, 8]. 반면 타입 단언(`as`)은 "내가 컴파일러보다 더 잘 안다"는 전제로 작동하여 속성 누락이나 초과를 제대로 검증하지 않습니다[5, 9]. `satisfies` 연산자는 대상 객체가 지정된 인터페이스나 타입에 부합하는지 엄격히 검사하면서도, 컴파일러가 유추한 속성의 구체적인 값을 잃지 않게 보존합니다[1-3, 6].
* **과잉 속성 검사(Excess Property Checking)와 엄격성 강제:** TypeScript의 구조적 타이핑(Structural Typing) 환경에서는 요구되는 속성만 존재하면 추가적인 속성이 있어도 타입이 호환되는 것으로 간주됩니다[10, 11]. 하지만 백엔드 데이터를 프론트엔드 모델로 매핑하는 등의 상황에서 `satisfies`를 사용하면, 대상 타입에 정의된 속성만이 안전하게 매핑되도록 강제하여 오타나 의도치 않은 잉여 속성을 컴파일 타임에 효과적으로 잡아냅니다[12-14].
* **과잉 속성 검사([[Excess Property Checking]])와 엄격성 강제:** TypeScript의 구조적 타이핑([[Structural Typing]]) 환경에서는 요구되는 속성만 존재하면 추가적인 속성이 있어도 타입이 호환되는 것으로 간주됩니다[10, 11]. 하지만 백엔드 데이터를 프론트엔드 모델로 매핑하는 등의 상황에서 `satisfies`를 사용하면, 대상 타입에 정의된 속성만이 안전하게 매핑되도록 강제하여 오타나 의도치 않은 잉여 속성을 컴파일 타임에 효과적으로 잡아냅니다[12-14].
* **주요 활용 패턴:**
* **`as const`와의 결합:** `as const satisfies Type` 형태로 사용하면 컴파일 타임의 타입 검증과 런타임의 불변성(Immutability)을 동시에 확보할 수 있습니다[15]. 이는 절대 변경되어서는 안 되는 설정(Configuration) 객체나 룩업(Lookup) 테이블을 정의할 때 완벽한 패턴입니다[7, 15, 16].
* **식별 가능한 유니온(Discriminated Unions) 보존:** 식별 가능한 유니온 타입과 함께 사용할 때 판별자(Discriminator)의 리터럴 타입을 유지해주어, 이후 조건문이나 `switch` 문 등에서 정확한 타입 좁히기(Type Narrowing) 및 완전성 검사(Exhaustiveness Checking)가 가능해집니다[8, 16, 17].
* **`[[as const]]`와의 결합:** `as const satisfies Type` 형태로 사용하면 컴파일 타임의 타입 검증과 런타임의 불변성(Immutability)을 동시에 확보할 수 있습니다[15]. 이는 절대 변경되어서는 안 되는 설정(Configuration) 객체나 룩업(Lookup) 테이블을 정의할 때 완벽한 패턴입니다[7, 15, 16].
* **식별 가능한 유니온([[Discriminated Unions]]) 보존:** 식별 가능한 유니온 타입과 함께 사용할 때 판별자(Discriminator)의 리터럴 타입을 유지해주어, 이후 조건문이나 `switch` 문 등에서 정확한 타입 좁히기(Type Narrowing) 및 완전성 검사(Exhaustiveness Checking)가 가능해집니다[8, 16, 17].
* **유연성과 안전성의 결합:** `satisfies`는 객체의 필수 속성들을 올바른 타입으로 가지고 있는지 검증하면서도, 타입에 명시되지 않은 추가 속성을 포함하는 것을 차단하지 않아 확장성 있는 객체 구조를 유지할 수 있게 해줍니다(단, 기본 타입 속성명과 비슷한 오타가 발생하면 에러로 포착합니다)[2, 7, 18, 19].
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)