TypeScript đã thắng. Và đây là những gì chúng ta nhận được.
Không còn ai tranh cãi về việc có nên dùng TypeScript hay không nữa. Các dự án frontend mới đều sử dụng nó theo mặc định. Cuộc tranh luận đã kết thúc. TypeScript đã thắng.
Chiến thắng chỉ là phần nhàm chán. Giá trị thực sự nằm ở những gì các kiểu dữ liệu (types) mang lại cho quy trình làm việc của bạn. Nó không chỉ đơn thuần là việc bắt lỗi đánh máy.
Chữ ký hàm (function signature) đóng vai trò như một tài liệu hướng dẫn. Nó không bao giờ bị lỗi thời. Nếu mã nguồn thay đổi, trình biên dịch sẽ báo lỗi build ngay lập tức.
Hãy nhìn vào một hàm lập lịch nhắc nhở. Bạn biết nó cần gì và trả về cái gì mà không cần đọc một dòng comment nào. Bạn thấy chính xác các tùy chọn cho kênh liên lạc. Nếu bạn thêm một kênh mới, trình biên dịch sẽ chỉ cho bạn mọi nơi cần cập nhật mã nguồn. Một dòng comment sẽ chỉ nằm đó và trở nên sai lệch.
Refactoring trở nên an toàn. Trong mã không có kiểu dữ liệu, việc đổi tên một trường (field) thật đáng sợ. Bạn phải tìm kiếm các chuỗi ký tự và cầu nguyện điều tốt đẹp nhất. Với TypeScript, bạn chỉ cần thay đổi kiểu dữ liệu. Trình biên dịch sẽ đưa cho bạn danh sách tất cả những gì đã bị lỗi. Refactoring không còn là việc mạo hiểm nữa. Nó trở thành một tác vụ an toàn.
Các kiểu dữ liệu cũng giúp bạn sử dụng AI hiệu quả hơn.
Khi bạn yêu cầu AI chỉnh sửa JavaScript không có kiểu dữ liệu, nó sẽ phải đoán cấu trúc đối tượng (object shape). Khi bạn dùng TypeScript, kiểu dữ liệu chính là bản đặc tả. AI biết chính xác những gì được phép. Các lỗi sẽ xuất hiện dưới dạng lỗi biên dịch thay vì gây ra lỗi sập hệ thống (crash) khi chạy thực tế. Các kiểu dữ liệu biến mã nguồn được tạo ra thành mã nguồn tương thích hoàn toàn.
Mọi người từng nói rằng các kiểu dữ liệu làm bạn chậm lại. Nhưng trong quy trình làm việc với AI, chúng lại giúp bạn tăng tốc. Chúng đóng vai trò như những rào chắn (guardrails). Bạn có thể chấp nhận mã được tạo ra một cách tự tin thay vì phải kiểm tra thủ công từng dòng.
Viết các kiểu dữ liệu tốt hơn với những quy tắc sau:
- Sử dụng union thay vì nhiều biến boolean. Một trạng thái như "loading" | "error" | "ready" sẽ tốt hơn là ba cờ (flags) riêng biệt.
- Đặt tên cho các kiểu dữ liệu nghiệp vụ (domain types). Sử dụng một kiểu như Cents thay vì một con số thuần túy sẽ thể hiện rõ ý định của bạn.
- Tránh any. Hãy dùng unknown và thu hẹp kiểu (narrow it down). Từ khóa any sẽ phá hủy mạng lưới an toàn của bạn.
- Hãy để cơ chế suy luận (inference) hoạt động. Đừng khai báo kiểu (annotate) cho mọi thứ. Chỉ khai báo kiểu tại các ranh giới (boundaries) và để phần còn lại tự trôi chảy.
TypeScript đã biến các kho mã nguồn thành những bản hợp đồng rõ ràng. Những bản hợp đồng này cho phép refactoring không sợ hãi và nhận được sự hỗ trợ đáng tin cậy từ AI.
Chúng ta bắt đầu sử dụng kiểu dữ liệu để ngăn chặn lỗi. Chúng ta tiếp tục sử dụng chúng vì chúng là nền tảng cho mọi thứ khác.
Source: https://dev.to/parsajiravand/typescript-won-heres-what-that-actually-bought-us-53lo
Optional learning community: https://t.me/GyaanSetuAi
