TypeScript đã thắng. Và đây là những gì chúng ta nhận được.

Cuộc tranh luận đã kết thúc. Hầu hết các dự án frontend mới đều sử dụng TypeScript theo mặc định. Mọi người không còn tranh cãi về việc có nên áp dụng nó hay không nữa.

Giá trị thực sự không chỉ dừng lại ở việc bắt lỗi đánh máy. Nó sâu sắc hơn nhiều so với những gì người ta từng quảng bá ban đầu.

Các kiểu dữ liệu (types) cung cấp tài liệu không bao giờ bị lỗi thời. Chữ ký hàm (function signature) cho bạn biết chính xác một đoạn mã cần gì và nó trả về cái gì. Nếu một lập trình viên thêm một tùy chọn mới vào một union type, trình biên dịch sẽ buộc bạn phải cập nhật mọi phần trong mã nguồn của mình. Chú thích (comments) có thể bị lỗi thời. Types thì không.

Việc tái cấu trúc mã (refactoring) chuyển từ một nhiệm vụ đáng sợ thành một việc làm an toàn. Trong mã không có kiểu dữ liệu, việc đổi tên một trường (field) giống như một canh bạc. Với TypeScript, bạn chỉ cần thay đổi kiểu dữ liệu và trình biên dịch sẽ cung cấp cho bạn danh sách mọi dòng mã bị lỗi. Điều này giúp loại bỏ nỗi sợ khi phải chạm vào mã nguồn cũ.

Types cũng cải thiện hiệu quả làm việc của bạn với AI.

Khi bạn yêu cầu AI chỉnh sửa JavaScript không có kiểu dữ liệu, nó sẽ tự đoán cấu trúc. Nó có thể mắc lỗi dẫn đến các lỗi trên môi trường production. Trong TypeScript, kiểu dữ liệu đóng vai trò như một bản đặc tả (specification). AI sẽ biết các quy tắc. Nếu AI mắc lỗi, trình biên dịch sẽ phát hiện ngay lập tức. Types biến "mã có vẻ hợp lý" thành "mã đã được chứng minh".

Types không làm bạn chậm lại. Trong quy trình làm việc với AI, chúng 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ể tin tưởng vào mã được tạo ra mà không cần phải kiểm tra thủ công từng dòng.

Hãy viết types với mục đích rõ ràng:

• Sử dụng unions thay vì nhiều biến boolean. Một trạng thái như "loading" | "error" | "ready" giúp ngăn chặn các trạng thái không thể xảy ra. • Đặt tên cho các domain types của bạn. Việc sử dụng "type Cents = number" giúp ý định của bạn trở nên rõ ràng. • Tránh dùng "any". Thay vào đó, hãy dùng "unknown" và thu hẹp (narrow) các kiểu dữ liệu của bạn. "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. Bạn không cần phải khai báo mọi thứ. Hãy khai báo chữ ký hàm và các API được xuất ra (exported APIs), sau đó để phần còn lại tự vận hành.

TypeScript đã biến các kho mã nguồn (codebases) thành các tập hợp các hợp đồng (contracts) được thực thi nghiêm ngặt. Những hợp đồng này cho phép tái cấu trúc mã một cách 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 types để 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.

Nguồn: https://dev.to/parsajiravand/typescript-won-heres-what-that-actually-bought-us-12m8