TypeScript 6.0은 설계부터 기존 방식을 깨뜨립니다

TypeScript 6.0이 출시되었으며, 이는 모든 것을 변화시킵니다. 이번 릴리스는 버전 2.x 이후 가장 중대한 변화입니다. 레거시 설정에 의존하고 있다면, 다음 빌드는 실패할 가능성이 높습니다.

코드를 깨뜨릴 세 가지 주요 변경 사항은 다음과 같습니다:

이것이 중요한 이유:

Strict Mode 이전에는 strict mode를 직접 활성화해야 했습니다. 이제는 이것이 표준입니다. 코드베이스의 약 70%가 즉시 빌드 오류(red builds)를 겪게 될 것입니다. 초기화되지 않은 속성, 암시적 any 타입, 그리고 체크되지 않은 null 값으로 인해 오류가 발생할 것입니다.

ES5 지원 제거 이제 tsconfig.json에서 ES5 또는 ES3를 대상으로 설정할 수 없습니다. 새로운 기본값은 ES2025입니다. 오래된 브라우저를 지원해야 한다면, Babel과 같은 별도의 도구를 파이프라인에 추가해야 합니다.

Module Resolution 기본값이 더 이상 CommonJS가 아닙니다. 이제 ESNext입니다. Node.js 프로젝트가 암시적인 CommonJS 동작에 의존하고 있다면, 설정 파일에서 module 설정을 명시적으로 지정해야 합니다.

파이프라인을 깨뜨리지 않고 마이그레이션하는 방법:

  1. 설정 검토(Audit) 설정을 운에 맡기지 마세요. 업그레이드하기 전에 tsconfig.jsonstrict, target, module에 대한 명시적인 값을 추가하세요.

  2. 버전 고정 package.json에서 TypeScript 버전을 고정하세요. 6.0으로 이동하기 전에 현재 버전에서 기존 빌드가 정상 작동하는지 테스트하세요.

  3. 기능 브랜치(Feature branch) 사용 새 브랜치에 TypeScript 6.0을 설치하세요. target을 ES2025로 업데이트하고 module 타입을 명확하게 설정하세요.

  4. 점진적인 타입 수정 파일을 생성하지 않고 컴파일러를 실행하여 모든 오류를 확인하세요. strictNullChecks와 암시적 any 오류를 우선적으로 해결하세요.

  5. 모든 항목 테스트 전체 테스트 스위트를 실행하세요. TypeScript는 타입 오류를 잡아내지만, 테스트는 새로운 엄격함으로 인해 발생하는 로직 오류를 잡아냅니다.

TypeScript 6.0은 버전 7.0 재작성 전의 마지막 단계입니다. 버전 7.0은 Go 네이티브 코어를 사용할 예정입니다. 이는 레거시 지원이 완전히 사라짐을 의미합니다.

나중에 닥칠 위기를 피하려면 지금 코드베이스를 현대화하세요.

출처: https://dev.to/davekurian/typescript-60-launches-strict-mode-by-default-and-drops-es5-support-n31