downlevelIteration 플래그
TypeScript 2.3 버전에는 downlevelIteration 플래그가 도입되었습니다. 이는 tsconfig의 target이 es3와 es5로 설정돼 있을 때, es6의 이터레이션 프로토콜 지원을 위해 사용됩니다.
본 내용에 들어가기에 앞서서 tsconfig의 compilerOptions에 존재하는 target과 lib 옵션에 대해서 먼저 알아야 합니다.
compilerOptions의 target 옵션
모던 브라우저의 경우 es6 문법을 대부분 지원하지만, 더 옛날 환경에서의 동작이나, 더 최신 환경에서의 동작을 보장해야 할때도 있습니다. target에 ES 버전을 설정함으로써 타입스크립트 코드를 해당 버전의 자바스크립트 코드로 트랜스파일 가능합니다. 예를들면 es6 문법 중 하나인 화살표 함수를 function 키워드를 사용한 es5 이하의 문법으로 변환하는 것입니다. 참고로 target의 기본값은 es3입니다.
target을 바꾸면 다음에 설명할 lib 설정의 기본값이 바뀝니다. target을 es5로 설정하면 lib에는 ‘dom’과 ‘es5’가 기본으로 설정됩니다. target과 lib을 동시에 설정함으로서 디테일한 설정이 가능하지만 편의상 target만 설정해도 좋습니다.
node 개발자의 경우, 관련된 커뮤니티에서 특정 플랫폼과 버전에 따른 tsconfig 설정을 미리 만들어 놓았으므로 참고 가능합니다.
target의 설정값중 하나인 ESNext의 경우, 현재 설치된 타입스크립트 버전에서 지원할 수 있는 가장 최신 버전의 ES를 의미합니다. 이 설정은 타입스크립트 버전에 의존하기 때문에 유의해야 합니다.