TypeScript 5.0 베타 주요 변경사항 정리

배경

2월 초 TypeScript 5.0 베타가 릴리즈되었다. 메이저 버전 업데이트인 만큼 몇 가지 주목할 변경사항이 있어 정리해둔다.

주요 변경사항

1. 데코레이터 표준화

기존 experimental 데코레이터 대신 Stage 3 표준 데코레이터를 지원한다. experimentalDecorators 플래그 없이 사용 가능해졌다.

function logged(value: any, context: ClassMethodDecoratorContext) {
  const methodName = String(context.name);
  return function(this: any, ...args: any[]) {
    console.log(`Calling ${methodName}`);
    return value.call(this, ...args);
  };
}

class Calculator {
  @logged
  add(a: number, b: number) {
    return a + b;
  }
}

당장은 기존 라이브러리와의 호환성 때문에 마이그레이션이 쉽지 않을 것 같다. NestJS나 TypeORM 같은 프레임워크들이 업데이트될 때까지는 기존 방식을 유지해야 할 듯하다.

2. Enum 개선

모든 enum이 union enum으로 처리되어 타입 체킹이 더 정확해졌다. 이전에는 computed member가 있으면 union으로 동작하지 않았는데 이제는 가능하다.

3. 성능 개선

번들 사이즈 감소와 컴파일 속도 향상이 있다고 한다. 공식 블로그에서는 10-20% 향상되었다고 하는데, 우리 프로젝트에서도 체감될지는 정식 릴리즈 후 확인해봐야겠다.

마이그레이션 계획

당장 업그레이드하기보단 정식 릴리즈 후 한두 달 지켜보고 진행할 예정이다. 특히 데코레이터 관련해서는 사용 중인 라이브러리들의 대응 상황을 먼저 확인해야 한다.