TypeScript 6.0 RC 출시! 7.0으로의 전환, 무엇이 달라질까?
TypeScript 6.0 RC 출시, 기존 JavaScript 기반 컴파일러의 마지막 릴리스
7.0 버전은 Go로 작성된 새로운 컴파일러 기반으로, 성능 향상 기대
함수 표현식(Function Expressions), 서브패스 임포트(Subpath Imports) 등 다양한 기능 개선
tsconfig.json 설정 변경 및 es5 타겟(target: es5) 지원 중단 등, 7.0 전환 위한 준비 필요
TypeScript 6.0의 주요 변경 사항: Less Context-Sensitivity on this-less Functions
TypeScript 6.0에서는 this를 사용하지 않는 함수(this-less Functions)의 컨텍스트 민감성(Context-Sensitivity)을 완화하여 타입 추론(Type Inference)을 개선했다. 특히, 메서드 구문(Method Syntax) 대신 화살표 함수(Arrow Function)를 사용하면 this 바인딩(this Binding)이 없어 타입 추론 오류를 방지한다. 이는 타입스크립트 컴파일러(TypeScript Compiler)의 정확성을 높이고, 개발자가 예상치 못한 오류를 겪는 상황을 줄여준다.
서브패스 임포트(Subpath Imports) 지원 강화
Node.js 20부터 지원되는 서브패스 임포트(Subpath Imports)를 TypeScript 6.0에서 완벽하게 지원한다. 이를 통해 개발자는 복잡한 상대 경로(Relative Path) 대신 `#/`와 같은 간결한 구문을 사용하여 모듈을 임포트할 수 있다. 이 기능은 모듈 관리(Module Management)를 단순화하고, 코드 가독성을 향상시킨다. 특히, 번들러(Bundler)를 사용하는 프로젝트에서 유용하게 활용될 수 있다.
--stableTypeOrdering 플래그(Flag) 도입
TypeScript 7.0으로의 전환을 돕기 위해 `--stableTypeOrdering` 플래그가 도입되었다. 이 플래그는 타입 ID(Type ID) 할당 순서를 고정하여, 컴파일러 출력의 일관성을 보장한다. 이는 선언 파일(Declaration Files)의 변경 사항을 쉽게 파악하고, 6.0과 7.0 간의 차이점을 비교하는 데 도움을 준다. 하지만, 타입 검사 속도가 최대 25%까지 느려질 수 있으므로, 신중하게 사용해야 한다.
tsconfig.json 설정 변경 및 es5 타겟(target: es5) 지원 중단
TypeScript 6.0에서는 tsconfig.json의 기본 설정이 변경되어, 개발 환경을 현대화하고 있다. 특히, `strict` 모드가 기본적으로 활성화되고, `module`은 `esnext`로, `target`은 최신 ECMAScript 버전으로 설정된다. 또한, `es5` 타겟 지원이 중단되어, 최신 브라우저 환경에 최적화된 코드를 생성하도록 유도한다. 이러한 변경 사항은 코드 품질(Code Quality)을 높이고, 최신 JavaScript 기능을 활용하는 데 기여한다.
7.0 버전을 위한 준비: Deprecations 및 Breaking Changes
TypeScript 6.0은 7.0으로의 전환을 위한 과도기적 릴리스로, 다양한 Deprecated 옵션(Deprecated Options)과 Breaking Changes를 포함한다. `baseUrl`, `moduleResolution node`, `esModuleInterop false` 등, 기존에 사용하던 설정이 더 이상 지원되지 않으므로, 7.0으로 업그레이드하기 전에 이러한 변경 사항을 확인하고, 코드베이스를 수정해야 한다. 이는 TypeScript 생태계(Ecosystem)의 발전을 위한 중요한 단계이다.