피드로 돌아가기
Node.js 22.6.0 (Current)
Node.js BlogNode.js Blog
Backend

Node.js 22.6.0이 --experimental-strip-types 플래그로 TypeScript 타입 애너테이션 제거 및 --experimental-network-inspection으로 네트워크 활동 검사 기능 추가

Node.js 22.6.0 (Current)

2024년 8월 6일6intermediate

Context

Node.js는 TypeScript 파일을 직접 실행할 수 없어 빌드 단계가 필요했으며, 개발자들이 타입 체크와 별도로 트랜스파일을 관리해야 했다. 프로덕션 환경에서 네트워크 요청 디버깅을 위해서는 외부 프록시나 별도 도구에 의존해야 했다.

Technical Solution

  • TypeScript 타입 제거 기능 도입: --experimental-strip-types 플래그로 .ts 파일의 타입 애너테이션을 제거하여 트랜스파일 없이 실행
  • 타입 애너테이션 제한: inline 타입 애너테이션만 지원하며 enum, namespace 등의 TypeScript 고급 기능은 미지원
  • 명시적 파일 확장자 요구: import/require 문에서 파일 확장자를 반드시 명시해야 함
  • type 키워드 강제 사용: 타입 import에서 runtime 에러 방지를 위해 type 키워드 사용 필수
  • node_modules 내 TypeScript 기본 비활성화: 의존성 패키지의 .ts 파일 처리를 기본적으로 비활성화
  • 네트워크 검사 기능 추가: --experimental-network-inspection 플래그로 JavaScript 애플리케이션 내 네트워크 활동 모니터링 가능
  • HTTP 진단 채널 확장: http.client.request.error 진단 채널 추가로 HTTP 클라이언트 요청 에러 추적 개선
  • stream DuplexPair API 노출: 기존 비공개 API를 공개 API로 전환
  • test_runner 개선: watch 모드에서 run() 지원 추가 및 globPatterns 옵션 도입
  • 테스트 스냅샷 리팩터링: context에서 파일 정보를 가져오도록 변경 및 context.filePath 속성 추가

Impact

이 릴리즈에서는 정량적 성능 지표(지연 시간 감소율, 처리량 증가 등)가 제시되지 않았다.

Key Takeaway

Node.js가 TypeScript 지원의 초기 단계를 시작함으로써 개발 흐름이 간소화될 수 있지만, 현재는 제한된 기능 범위(inline 타입만 지원)로 인해 복잡한 TypeScript 프로젝트에서는 여전히 빌드 도구가 필요하다. 네트워크 검사 기능의 도입은 Node.js 애플리케이션 디버깅의 범위를 확대하며 외부 도구 의존도를 낮출 수 있는 기반을 제공한다.


TypeScript 프로젝트를 진행하는 Node.js 개발자는 --experimental-strip-types 플래그로 간단한 타입 애너테이션만 사용하는 경우 빌드 단계를 생략할 수 있지만, enum이나 namespace 같은 고급 기능이 필요하면 기존 빌드 도구(tsc, esbuild 등)를 계속 사용해야 한다. 프로덕션 환경에서 HTTP 요청 문제를 진단해야 할 때는 --experimental-network-inspection을 활성화하여 프로토콜 분석기나 프록시 도구 없이 네트워크 활동을 직접 추적할 수 있다.

원문 읽기