[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,10 +1,10 @@
---
id: P-REINFORCE-AUTO-7ED2D3
id: [[P-Reinforce]]-AUTO-7ED2D3
category: "10_Wiki/💡 Topics/Programming & Language"
confidence_score: 0.90
tags: [auto-reinforced]
last_reinforced: 2026-04-20
github_commit: "[P-Reinforce] Continuous Worker - 과잉 속성 체크(Excess Property Checking)"
github_commit: "[P-Reinforce] Continuous Worker - 과잉 속성 체크([[Excess Property Checking]])"
---
# [[과잉 속성 체크(Excess Property Checking)]]
@@ -13,7 +13,7 @@ github_commit: "[P-Reinforce] Continuous Worker - 과잉 속성 체크(Excess Pr
> 과잉 속성 체크(Excess Property Checking)는 TypeScript에서 객체 리터럴을 다른 변수에 직접 할당하거나 함수의 인자로 전달할 때, 예상치 못한(정의되지 않은) 잉여 속성이 포함되어 있는지 엄격하게 검사하여 에러를 발생시키는 기능입니다 [1-4]. 구조적 타이핑의 유연성 속에서 발생할 수 있는 오타나 잘못된 속성 전달 실수를 컴파일 시점에 포착하여 런타임 오류를 방지하는 첫 번째 방어선 역할을 합니다 [5-7].
## 📖 구조화된 지식 (Synthesized Content)
- **구조적 타이핑의 보완 장치**: TypeScript는 기본적으로 객체가 요구되는 최소한의 속성을 가지고 있다면 타입 호환성을 인정하는 구조적 타이핑(Structural Typing, 일명 덕 타이핑)을 사용합니다 [7, 8]. 그러나 이 유연성으로 인해 `color``colour`로 잘못 입력하는 등의 오타가 발생해도 호환되는 것으로 판단될 위험이 있습니다 [6]. TypeScript는 객체 리터럴을 직접 다루는 상황에서는 개발자가 잉여 속성을 전달할 의도가 없었을 것이라 간주하여 더 엄격한 과잉 속성 체크를 적용해 실수를 방지합니다 [5-7].
- **구조적 타이핑의 보완 장치**: TypeScript는 기본적으로 객체가 요구되는 최소한의 속성을 가지고 있다면 타입 호환성을 인정하는 구조적 타이핑([[Structural Typing]], 일명 덕 타이핑)을 사용합니다 [7, 8]. 그러나 이 유연성으로 인해 `color``colour`로 잘못 입력하는 등의 오타가 발생해도 호환되는 것으로 판단될 위험이 있습니다 [6]. TypeScript는 객체 리터럴을 직접 다루는 상황에서는 개발자가 잉여 속성을 전달할 의도가 없었을 것이라 간주하여 더 엄격한 과잉 속성 체크를 적용해 실수를 방지합니다 [5-7].
- **발동 조건 및 한계 (우회로)**: 과잉 속성 체크는 "객체 리터럴"이 대상 타입에 직접 할당되거나 인수로 전달될 때만 특별하게 동작합니다 [3-5]. 만약 객체 리터럴을 먼저 중간 변수에 선언 및 할당한 뒤, 해당 변수를 대상 타입에 간접적으로 할당하면 이 기능은 작동하지 않습니다 [3, 5, 9, 10]. 변수를 거치게 되면 구조적 타이핑의 기본 원칙인 "최소 요건 충족"으로 돌아가기 때문에, 대상 타입과 최소 하나의 속성만 겹치면 초과 속성이 존재하더라도 에러를 발생시키지 않게 됩니다 [10, 11].
- **잠재적 위험과 `satisfies`를 통한 해결**: 간접 할당을 통해 과잉 속성 체크를 우회하게 될 경우, React 컴포넌트에 유효하지 않은 속성이 전달되거나 불필요한 리렌더링이 발생하는 등 런타임 버그의 원인이 될 수 있습니다 [10, 12, 13]. 이를 해결하기 위해 TypeScript 4.9에 도입된 `satisfies` 연산자를 활용할 수 있습니다 [14]. `satisfies`는 객체의 구체적인 타입(리터럴 타입 등)을 잃지 않고 유지하면서도, 대상 인터페이스의 요구사항을 엄격하게 검사하여 간접 할당 시에도 과잉 속성을 효과적으로 차단합니다 [14, 15].