ECMAScript 2025에서 JavaScript에 Iterator 클래스와 반복자 도우미 메서드(.map(), .filter() 등)가 추가되면서 TypeScript의 기존 Iterator 타입과 충돌이 발생했습니다.
충돌 원인:
- 기존: Iterator는 단순히 .next() 메서드가 있는 객체 타입
- 신규: Iterator는 도우미 메서드를 상속받는 클래스의 인스턴스여야 함
TypeScript의 해결책:
- 전역 Iterator 클래스 유지
- 인스턴스 타입을 IteratorObject로 새로 정의
- 기존 Iterator 타입은 핵심 반복 기능만 포함하여 하위 호환성 유지
- 5단계 과정을 통해 타입 시스템 재구성
결과:
- Iterable 객체는 기존 Iterable 타입 사용
- 새로운 반복자는 IteratorObject 타입 사용 (도우미 메서드 접근 가능)
- 기존 코드 호환성 유지
- 반복자 생성 시 Iterator.prototype이 프로토타입 체인에 필수 포함
이를 통해 새로운 반복자 기능을 지원하면서도 기존 코드를 보호했습니다.