피드로 돌아가기
TypeScript 6.0 발표
GeekNewsGeekNews
Backend

TypeScript 6.0 발표

TypeScript가 JavaScript 기반 마지막 릴리스인 6.0을 발표하며 ES5 타겟 폐기, 기본값 현대화, 16개의 레거시 옵션 제거로 7.0(Go 네이티브 포트) 전환 준비

neo2026년 3월 25일12intermediate

Context

TypeScript는 JavaScript 코드베이스 기반의 버전 5.x 시리즈를 유지하고 있었으나, Go로 재작성된 TypeScript 7.0으로의 전환을 앞두고 있다. 기존 레거시 옵션(ES5 타겟, AMD/UMD 모듈, --baseUrl, node10 모듈 해석)과 모던 JavaScript 표준 간의 괴리가 사용자 혼동과 마이그레이션 경로 불명확성을 야기했다.

Technical Solution

  • strict 모드 기본값 true로 변경: 신규 프로젝트 창성 시 기본적으로 엄격한 타입 체킹 적용, 기존 프로젝트는 명시적으로 "strict": false 설정 필요
  • 컴파일러 기본값 현대화: target 기본값을 es2025로, module 기본값을 esnext로, types 기본값을 []로 변경해 에버그린 런타임과 모던 ESM 중심 구조 반영
  • rootDir 기본값 고정화: 기존 동적 추론 방식에서 tsconfig.json 위치 기준 디렉토리로 고정해 프로젝트 구조 분석 오버헤드 제거
  • 16개 레거시 옵션 폐기 선언: target: es5, --moduleResolution node (node10), AMD/UMD/SystemJS 모듈, --baseUrl, --downlevelIteration, esModuleInterop false, allowSyntheticDefaultImports false, --alwaysStrict false, --moduleResolution classic, outFile, import asserts 키워드, no-default-lib 디렉티브, 네임스페이스 선언 구문(module Foo {}) 등 제거
  • 모듈 해석 옵션 확장: --moduleResolution bundler와 --module commonjs 조합 허용, #/ 형태의 subpath imports 지원 추가
  • ES2025 표준 기능 타입 지원: Temporal API, Map.getOrInsert/getOrInsertComputed, RegExp.escape, Iterator/Set 메서드 등 Stage 4 ECMAScript 제안의 타입 정의 포함
  • 타입 정렬 결정화: --stableTypeOrdering 플래그 도입으로 union 타입 정렬을 콘텐츠 기반 결정적 알고리듬으로 통일해 TypeScript 7.0 병렬 타입 체킹과 호환성 확보
  • this 미사용 함수 컨텍스트 민감도 완화: 실제 사용되지 않는 this를 가진 메서드는 컨텍스트 민감 함수 분류에서 제외해 메서드 순서 독립적 타입 추론 실현
  • DOM 라이브러리 통합: dom.iterable과 dom.asynciterable 내용을 lib.dom.d.ts에 완전 통합해 NodeList/HTMLCollection 이터레이션 사용 시 별도 "dom.iterable" 설정 불필요화
  • import assertion 구문 폐기: import ... assert { type: "json" }에서 import ... with { type: "json" }로 표준 변경 반영

Impact

  • types 기본값 변경으로 실제 빌드 시간 20~50% 개선 사례 확인
  • --stableTypeOrdering 활성화 시 타입 체킹에 최대 25% 성능 저하 가능 (마이그레이션 진단용 플래그)

Key Takeaway

TypeScript 6.0은 ES5/레거시 모듈 환경을 완전히 폐기하고 모던 JavaScript 표준 중심으로 재편성하는 브릿지 릴리스로, 기본값 현대화(strict=true, target=es2025, types=[])를 통해 기존 프로젝트는 마이그레이션 경로를 명확히 하고 신규 프로젝트는 안전성 있는 설정을 얻는다. "ignoreDeprecations": "6.0" 설정으로 7.0 릴리스까지 유예 기간을 제공하지만, 병렬 컴파일과 shared memory multithreading을 지원하는 7.0으로의 조기 전환을 권장한다.


기존 TypeScript 프로젝트를 6.0으로 업그레이드할 때 types 기본값이 []로 변경되므로 대부분 "types": ["node"] 또는 "types": ["jest"] 등을 명시적으로 설정해야 한다. rootDir 기본값이 tsconfig.json 위치로 고정되므로 src 디렉토리 구조가 있는 경우 "rootDir": "./src"를 반드시 설정해야 의도하지 않은 dist/src 출력 구조를 방지할 수 있다. --baseUrl 사용 중인 프로젝트는 paths 항목에 직접 접두사를 추가하는 방식으로 마이그레이션하고, ts5to6 도구로 자동 조정이 가능하다.

원문 읽기