# [[TypeScript 4.9]]

## 📌 Brief Summary
TypeScript 4.9는 객체의 구조 검증과 구체적인 타입(literal types) 유지 사이의 딜레마를 해결하기 위해 `satisfies` 연산자를 새롭게 도입한 주요 릴리스입니다 [1, 2]. 이 버전을 통해 개발자는 타입 추론의 정확성을 잃지 않으면서도 엄격한 타입 안정성을 강제할 수 있게 되었습니다 [1, 3].

## 📖 Core Content
- **`satisfies` 연산자 도입**: TypeScript 4.9의 핵심적인 변화는 `satisfies` 연산자의 추가입니다 [1, 2]. 기존의 타입 어노테이션(`:`)은 객체의 리터럴 타입을 일반적인 타입(예: 특정 문자열이 일반 `string`으로)으로 넓히는(widening) 문제가 있었고, 타입 단언(`as`)은 타입 검증을 건너뛰게 만드는 위험이 있었습니다 [1, 2, 4].
- **타입 안전성과 구체성 동시 확보**: 4.9에 도입된 `satisfies`는 대상 객체가 특정 인터페이스나 타입의 요구사항을 충족하는지 검사하면서도, 개발자가 정의한 구체적인 값(리터럴 타입)을 그대로 유지시킵니다 [2, 5].
- **과잉 속성 체크(Excess Property Checking) 문제 해결**: TypeScript의 구조적 타이핑에서는 간접 할당 시 과잉 속성 체크가 작동하지 않아 의도치 않은 데이터가 섞이는 취약점이 있습니다 [6]. `satisfies` 연산자는 이러한 간접 할당 시에도 엄격한 속성 검사를 수행할 수 있는 기반을 마련하여 과잉 속성의 유입을 차단합니다 [2].
- **고급 패턴과의 결합**: 이 연산자는 식별 가능한 유니온(Discriminated Unions)에서 판별자의 리터럴 타입을 보존해 타입 좁히기(Type narrowing)를 가능하게 합니다 [7]. 또한 `as const`와 결합하여 검증과 불변성(Immutability)을 동시에 만족시키는 객체를 생성할 수 있도록 지원합니다 [8].

## 🔗 Knowledge Connections
- **Related Topics:** [[satisfies Operator]], [[Excess Property Checking]], [[Structural Typing]], [[Type Narrowing]]
- **Projects/Contexts:** [[Type Safety Verification]], [[Object Structure Validation]]
- **Contradictions/Notes:** 주어진 소스 내에서 TypeScript 4.9와 관련된 설명은 전적으로 `satisfies` 연산자의 도입과 그로 인한 타입 검증 시스템의 변화에 집중되어 있으며, 그 외 TypeScript 4.9의 다른 기능 업데이트에 대해서는 소스에 관련 정보가 부족합니다.

---
*Last updated: 2026-04-18*