TypeScript 5.5: type inference cải tiến, decorators chuẩn hóa, isolated declarations

Giới thiệu

TypeScript 5.5 mang đến những cải tiến đáng kể cho hệ thống kiểu dữ liệu, khiến mã nguồn an toàn hơn và dễ bảo trì hơn. Bài viết này đi sâu vào cải tiến type inference, decorators chuẩn hóaisolated declarations — ba tính năng cốt lõi định hình trải nghiệm phát triển hiện đại. Để biết thêm chi tiết chính thức, bạn có thể tham khảo bản thông báo phát hành của Microsoft.

Minh họa TypeScript 5.5 logo trên nền code editor

Cải tiến type inference: thông minh hơn, ít annotation hơn

TypeScript 5.5 mở rộng khả năng suy luận kiểu (type inference) trong nhiều ngữ cảnh phức tạp. Trước đây, các hàm generic lồng nhau hoặc callback phức tạp thường buộc lập trình viên phải khai báo kiểu tường minh. Phiên bản mới sử dụng thuật toán control flow analysis nâng cao để theo dõi luồng dữ liệu qua các nhánh điều kiện, vòng lặp và xử lý lỗi.

Ví dụ điển hình là suy luận kiểu cho Promise.all với mảng các promise khác kiểu:

const results = await Promise.all([
  fetchUser(1),
  fetchPosts(2),
  fetchSettings()
]);
// TypeScript 5.5 suy luận chính xác: [User, Post[], Settings]

Cải tiến này giảm thiểu boilerplate kiểu dữ liệu lên đến 30% trong các codebase sử dụng nhiều async/await và generic phức tạp.

Decorators chuẩn hóa (Stage 3): dùng ngay trong production

Decorators đã trải qua nhiều giai đoạn proposal (Stage 1 → 2 → 3) và TypeScript 5.5 triển khai đầy đủ theo tiêu chuẩn ECMAScript Stage 3. Cú pháp mới sử dụng @decorator thay vì @decorator() cũ, và hỗ trợ decorator metadata để truy xuất thông tin lúc chạy.

So sánh nhanh:

Đặc điểm Cũ (Experimental) Mới (Stage 3)
Cú pháp @Log() @Log
Metadata Không có Symbol.metadata
Hỗ trợ class fields Hạn chế Đầy đủ
Tương thích Babel/Swc Cần plugin riêng Built-in

Ví dụ thực tế với validation decorator:

function Validate(min: number, max: number) {
  return function(target: Object, context: ClassFieldDecoratorContext) {
    return function(this: any, value: number) {
      if (value  max) {
        throw new Error(`${context.name} phải trong khoảng ${min}-${max}`);
      }
      return value;
    };
  };
}

class Product {
  @Validate(0, 10000)
  price: number = 0;
}

So sánh decorator cũ và mới trong code editor

Isolated declarations: build nhanh hơn, d.ts chính xác hơn

isolatedDeclarations là cờ compiler mới yêu cầu mỗi file khai báo kiểu đầy đủ trong chính file đó, không phụ thuộc vào suy luận chéo giữa các file. Khi bật cờ này, TypeScript sinh file .d.ts nhanh hơn đáng kể vì không cần phân tích toàn bộ project graph.

Lợi ích chính:

  • Tăng tốc build: Giảm 40-60% thời gian emit declaration trong monorepo lớn
  • Parallelization: Cho phép build song song thực sự (mỗi file độc lập)
  • Cache hiệu quả: Thay đổi file A không invalidate cache file B
  • Publish package sạch: File .d.ts không chứa reference nội bộ rối rắm

Cách bật trong tsconfig.json:

{
  "compilerOptions": {
    "isolatedDeclarations": true,
    "declaration": true,
    "declarationMap": true
  }
}

Lưu ý: Bật cờ này có thể báo lỗi ở chỗ code trước đây phụ thuộc vào cross-file inference — đây là tín hiệu tốt để refactor toward explicit types.

Bảng tóm tắt thay đổi chính

Tính năng Tác động Khuyến nghị
Type inference mở rộng Giảm annotation thủ công Bật ngay, refactor dần
Decorators Stage 3 Chuẩn hóa, metadata runtime Dùng cho project mới, migrate dần project cũ
Isolated declarations Build nhanh, cache tốt Bật cho library/package, cân nhắc cho app
Regex syntax checking Bắt lỗi regex lúc compile Bật --checkRegexSyntax
Import attributes Hỗ trợ with { type: 'json' } Dùng khi cần import JSON/WASM/CSS

Hướng dẫn nâng cấp an toàn

  1. Chạy npx [email protected] --dry-run trên codebase hiện tại để xem lỗi tiềm ẩn
  2. Bật "isolatedDeclarations": true trong tsconfig của package/library trước
  3. Migrate decorators: tìm @Decorator()@Decorator, thêm context param
  4. Chạy test suite, kiểm tra type coverage bằng type-coverage
  5. Cập nhật CI/CD để dùng Node 20+ (yêu cầu của TS 5.5)

Kết luận

TypeScript 5.5 không chỉ là bản cập nhật nhỏ — nó đánh dấu sự trưởng thành của decorators và đưa type inference lên tầm cao mới. Ba tính năng cốt lõi (inference, decorators, isolated declarations) cùng giải quyết bài toán lớn nhất của dự án quy mô lớn: velosity vs correctness. Nâng cấp ngay hôm nay để tận hưởng build nhanh hơn, code an toàn hơn và trải nghiệm phát triển mượt mà hơn.

Lý do nên nâng cấp ngay

  • Tiết kiệm thời gian build: Giảm 40-60% thời gian emit trong monorepo lớn nhờ isolated declarations
  • Giảm lỗi kiểu dữ liệu: Type inference thông minh phát hiện lỗi sớm hơn, ít cần khai báo tường minh hơn
  • Chuẩn hoá tương lai: Decorators Stage 3 tương thích với TC39 chuẩn, giảm nguy cơ kỹ thuật khi chuyển đổi
  • Cải thiện trải nghiệm phát triển: Editor hỗ trợ tốt hơn với kiểm tra kiểu nhanh và tái cấu trúc chính xác hơn

Lưu ý bổ sung: Khi làm việc với type inference phức tạp, hãy sử dụng // @ts-expect-error chỉ khi thực sự cần thiết và luôn có thể giải thích tại sao. Kết hợp với strict: true trong tsconfig để có trải nghiệm type checking toàn diện nhất.

Nguồn tham khảo: TypeScript 5.5 Release Notes | TC39 Decorators Proposal

Tôi là một lập trình viên IOS. Code chính là IOS nhưng thỉnnh thoảng vẫn đá sang Android hoặc web. Mặc dù không quá thông thạo nhưng tôi sẽ chia sẻ những kiến thức mà mình đã tìm hiểu, áp dụng qua.

Bài viết liên quan

Sơ đồ workflow migrate và sqlc trong CI/CD pipeline

Database migration an toàn với Golang golang-migrate sqlc Atlas so sánh

Tại sao cần database migration tool trong Golang Khi xây dựng ứng dụng production với Golang, việc quản lý thay đổi schema database là bài toán bắt buộc. Ba công…

Xem thêm

So sánh các web framework Python phổ biến

Giới thiệu So sánh các web framework Python phổ biến là một trong những chủ đề nóng nhất trong thời gian qua. Bài viết này sẽ cung cấp một cái…

Xem thêm

Bun 1.4: Runtime JavaScript Tăng Tốc 2x, Giảm 35% RAM

Bun 1.4 đánh dấu cột mốc quan trọng trong lịch sử phát triển của JavaScript runtime: lần đầu tiên Bun được viết lại hoàn toàn từ Zig sang Rust, đồng…

Xem thêm
0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
0 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất