dev-guide

TypeScript 5.5 신기능 완벽 정리 — 추론된 타입 가드와 정규식 검사

TypeScript 5.5에서 도입된 추론된 타입 가드, 정규식 구문 검사, const 타입 매개변수 개선, 성능 향상을 실무 예제와 함께 정리하였다.

★★★★★적극 추천
TypeScriptTypeScript5.5타입안전개발도구프론트엔드
TypeScript 5.5 신기능 완벽 정리 — 추론된 타입 가드와 정규식 검사
  • ·TypeScript 5.5 릴리스: 2024년 6월
  • ·추론된 타입 가드: 배열 필터 결과 타입 자동 좁히기
  • ·정규식 리터럴 구문 유효성 컴파일 타임 검사
  • ·타입 검사 속도 최대 10% 향상
이전에는 arr.filter(x => x !== null)의 결과 타입에 여전히 null이 포함되어 불필요한 타입 단언을 추가해야 했다. TypeScript 5.5의 추론된 타입 가드 도입 이후 코드가 훨씬 간결해졌으며, 정규식 실수를 컴파일 타임에 잡을 수 있게 되어 만족도가 높다.

TypeScript 5.5 핵심 신기능

TypeScript 5.5 추론된 타입 가드

TypeScript 5.5의 가장 주목할 기능은 함수 반환값에서 타입 가드를 자동으로 추론하는 능력이다. 이전에는 arr.filter(x => x !== null)의 결과가 여전히 null을 포함한 타입으로 추론되어 (x): x is NonNullable<T> 형태의 명시적 타입 술어를 직접 작성해야 했다. 5.5부터는 단순한 비교 조건을 반환하는 함수에서 타입 술어가 자동 추론되어 arr.filter(Boolean), arr.filter(x => x !== null) 등의 패턴에서 null이 자동으로 제거된 타입이 생성된다.

// TypeScript 5.5 이전 — 명시적 타입 술어 필요
const nums = [1, null, 2, null, 3]
const clean = nums.filter((x): x is number => x !== null) // 타입 선언 필요

// TypeScript 5.5 — 자동 추론
const clean2 = nums.filter(x => x !== null) // 타입: number[]
const clean3 = nums.filter(Boolean)          // 타입: number[]

// 정규식 검사 — 잘못된 패턴을 컴파일 타임에 감지
const re = /(?<year>\d{4})-(?<month\d{2})/  // 오류: 닫히지 않은 그룹

TypeScript 5.5 정규식 구문 검사

TypeScript 5.5는 정규식 리터럴의 구문 유효성을 컴파일 타임에 검사한다. 잘못된 이스케이프 시퀀스, 닫히지 않은 그룹, 유효하지 않은 플래그 조합, 잘못된 역참조 등을 코드 실행 전에 감지한다. 복잡한 정규식을 다루는 코드에서 안전성이 크게 향상되며, 런타임 오류로 이어질 수 있는 실수를 조기에 발견할 수 있다. 정규식 내의 명명된 캡처 그룹 타입도 향상되어 match.groups의 타입이 더 정확하게 추론된다.

타입 추론 개선

TypeScript 5.5 const 타입 매개변수 개선

제네릭 함수에 const 수정자를 타입 매개변수에 적용하면 추론된 타입이 더 좁은 리터럴 타입으로 고정된다. function identity<const T>(x: T): T로 선언하면 identity(['a', 'b']) 호출 시 반환 타입이 string[] 대신 readonly ['a', 'b']로 추론되어 튜플 기반 API 설계에서 타입 정밀도가 크게 향상된다. 5.5에서는 이 추론 로직이 더욱 정교해져 중첩된 제네릭과의 상호작용에서도 올바른 타입이 생성된다.

TypeScript 5.5 성능 최적화

TypeScript 5.5는 내부 타입 검사 알고리즘을 개선하여 대형 프로젝트에서 타입 검사 속도가 최대 10% 향상된다. 특히 복잡한 조건부 타입과 템플릿 리터럴 타입을 다수 사용하는 코드베이스에서 개선 효과가 두드러진다. IDE 자동완성 응답 속도도 함께 향상되어 대형 모노레포에서 개발 경험이 개선된다. 타입 인스턴스화 횟수 제한 관련 오류도 일부 시나리오에서 해소되었다.

실무 적용 전략

TypeScript 5.4에서 5.5로 업그레이드

5.4에서 5.5로 업그레이드는 대부분 Breaking Change 없이 진행된다. 그러나 추론된 타입 가드로 인해 이전에 숨어 있던 타입 오류가 표면화될 수 있으므로, 업그레이드 후 tsc --noEmit으로 전체 타입 검사를 실행하여 새로 발생한 오류를 확인해야 한다. 대부분의 오류는 실제 코드의 잠재적 버그가 드러난 것이므로 수정하는 것이 바람직하다.

TypeScript 5.5 strict 모드 활용

strict: true 모드에서 5.5의 새 기능이 더 많은 타입 불일치를 자동으로 잡아낸다. exactOptionalPropertyTypes 옵션을 함께 활성화하면 선택적 프로퍼티에 undefined를 명시적으로 할당하는 코드와 단순히 프로퍼티를 생략하는 코드를 구분하여 타입 안전성이 강화된다. 신규 프로젝트에서는 처음부터 strict 모드를 활성화하고, 기존 프로젝트는 단계적으로 strict 옵션을 추가하는 접근을 권장한다.

자주 묻는 질문

TypeScript 5.5 업그레이드 방법은 무엇인가요?+

npm install -D typescript@5.5 또는 bun add -D typescript@5.5로 업그레이드할 수 있습니다. 대부분의 프로젝트에서 추가 설정 변경 없이 바로 작동합니다.

추론된 타입 가드가 모든 필터 함수에 자동 적용되나요?+

단순한 비교 조건(x !== null, Boolean 등)에는 자동 적용됩니다. 복잡한 조건 로직에서는 여전히 명시적 타입 술어가 필요할 수 있습니다.

관련 글