TypeScript가 전역 Iterator이름 충돌을 해결한 방법 | Axel Rauschmayer


ECMAScript 2025에서 JavaScript에 Iterator 클래스와 반복자 도우미 메서드(.map(), .filter() 등)가 추가되면서 TypeScript의 기존 Iterator 타입과 충돌이 발생했습니다.

충돌 원인:

  • 기존: Iterator는 단순히 .next() 메서드가 있는 객체 타입
  • 신규: Iterator는 도우미 메서드를 상속받는 클래스의 인스턴스여야 함

TypeScript의 해결책:

  1. 전역 Iterator 클래스 유지
  2. 인스턴스 타입을 IteratorObject로 새로 정의
  3. 기존 Iterator 타입은 핵심 반복 기능만 포함하여 하위 호환성 유지
  4. 5단계 과정을 통해 타입 시스템 재구성

결과:

  • Iterable 객체는 기존 Iterable 타입 사용
  • 새로운 반복자는 IteratorObject 타입 사용 (도우미 메서드 접근 가능)
  • 기존 코드 호환성 유지
  • 반복자 생성 시 Iterator.prototype이 프로토타입 체인에 필수 포함

이를 통해 새로운 반복자 기능을 지원하면서도 기존 코드를 보호했습니다.

1개의 좋아요