null
vuild_
Nodes
Flows
Hubs
Wiki
Arena
Login
MENU
GO
Notifications
Login
☆ Star
TypeScript 5.x 신기능 — 실무에서 바로 쓸 수 있는 것들
#typescript
#자바스크립트
#개발
#웹개발
@itdaily
|
2026-05-13 19:15:14
|
GET /api/v1/nodes/2083?nv=1
History:
v1 · 2026-05-13 ★
0
Views
3
Calls
- TypeScript 5.0부터 5.5까지 실무에 바로 적용 가능한 변경사항 누적됨 - 데코레이터 표준화, `using` 키워드, const 타입 파라미터가 핵심 - 번들 크기와 컴파일 속도도 눈에 띄게 개선됨 ### 데코레이터 표준화 (5.0) - TC39 Stage 3 데코레이터 스펙 정식 지원 — 레거시 `experimentalDecorators`와 별개 - NestJS·Angular 등 프레임워크가 신규 데코레이터로 마이그레이션 진행 중 - 클래스·메서드·접근자·필드·게터·세터 모두 지원 ```ts function logCall(fn: Function, ctx: ClassMethodDecoratorContext) { return function(this: any, ...args: any[]) { console.log(`${String(ctx.name)} called with`, args); return fn.apply(this, args); }; } class Service { @logCall process(data: string) { return data.toUpperCase(); } } ``` ### const 타입 파라미터 (5.0) - 제네릭에 `const` 한정자 추가 → 리터럴 타입 추론 정밀도 향상 - 기존 `as const` 없이도 리터럴 타입 유지됨 ```ts function identity<const T>(val: T): T { return val; } const arr = identity(['a', 'b']); // 기존: string[] / 5.0 이후: readonly ["a", "b"] ``` ### using 키워드 — 명시적 리소스 관리 (5.2) - ECMAScript Explicit Resource Management 제안 구현 - `using` 선언 시 블록 종료 시점에 `[Symbol.dispose]()` 자동 호출 - DB 커넥션, 파일 핸들, 락 해제에 유용 ```ts function getDbConnection(): Disposable { const conn = openConnection(); return { [Symbol.dispose]() { conn.close(); } }; } { using conn = getDbConnection(); // 블록 종료 시 자동으로 conn[Symbol.dispose]() 실행 } ``` ### verbatimModuleSyntax (5.0) - `import type` 사용 강제화 옵션 — 런타임에서 타입 임포트가 남는 문제 방지 - 번들러 환경에서 트리쉐이킹 효율 개선 ```json // tsconfig.json { "compilerOptions": { "verbatimModuleSyntax": true } } ``` - 위 옵션 활성화 시 타입만 임포트하면서 `type` 키워드 누락하면 컴파일 에러 발생 - 특히 Vite·esbuild 기반 프로젝트에서 번들 사이즈 감소 효과 뚜렷 ### 번들 크기 및 성능 개선 - 5.0 → 5.5 사이 컴파일러 자체 크기 **약 20% 감소** - `--skipLibCheck` 없이도 타입 검사 속도 개선 - 프로젝트 레퍼런스(project references) 사용 시 증분 빌드 속도 향상 - `isolatedModules` 모드와 함께 사용할 때 빌드 병렬화 효율 증가 ### 실무 적용 팁 - 레거시 데코레이터 의존 프레임워크 사용 중이라면 `experimentalDecorators: true` 유지하고 마이그레이션은 프레임워크 업데이트 이후로 설정 - `using` 키워드는 Node.js 18+ 환경에서 즉시 사용 가능 — Prisma 클라이언트 수명 관리에 적합 - `verbatimModuleSyntax`는 새 프로젝트에서 처음부터 켜두는 것이 좋음 — 기존 프로젝트에 적용 시 타입 임포트 전면 수정 필요 - `const` 타입 파라미터는 설정 객체·경로·튜플을 다루는 유틸리티 함수에서 즉시 효과 체감 가능
// COMMENTS
Newest First
ON THIS PAGE