TypeScript đã thắng. Đây là những gì nó thực sự mang lại cho chúng ta.
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 mới đều sử dụng nó theo mặc định. Cuộc tranh luận đã kết thúc.
Giá trị thực sự không chỉ nằm ở việc bắt lỗi đánh máy. Nó còn nhiều hơn thế rất nhiều.
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.
Hãy nhìn vào hàm này:
function scheduleReminder(
userId: string,
at: Date,
channel: "email" | "push" | "sms",
): Promise<ReminderId>;
Bạn biết chính xác cách gọi hàm này. Bạn biết nó cần gì và trả về cái gì. Bạn biết rằng channel phải là một trong ba chuỗi cụ thể.
Nếu sau này bạn thêm tùy chọn "slack", 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. Một dòng chú thích (comment) sẽ chỉ bị lỗi thời và đánh lừa bạn.
Trong mã nguồn không có kiểu dữ liệu (untyped code), việc đổi tên một trường (field) mang lại cảm giác rất đáng sợ. Bạn phải tìm kiếm các chuỗi và cầu nguyện mọi thứ ổn thỏa. 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 một danh sách các việc cần làm cho tất cả những gì đã bị lỗi. Việc tái cấu trúc (refactoring) trở nên an toàn hơn.
Kiểu dữ liệu cũng hỗ trợ đắc lực cho AI.
Một mô hình AI sẽ phải đoán cấu trúc mã nguồn trong JavaScript. Trong TypeScript, kiểu dữ liệu chính là bản đặc tả (specification). AI biết điều gì được phép thực hiện. Các sai sót sẽ hiển thị dưới dạng lỗi thay vì gây ra sự cố sập hệ thống (production crashes).
Kiểu dữ liệu đóng vai trò như những rào chắn (guardrails). Chúng cho phép bạn sử dụng mã do AI viết một cách tự tin thay vì phải kiểm tra thủ công từng dòng.
Hãy 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 biến 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 type Cents = number để thể hiện mục đích rõ ràng.
• Tránh dùng any. Thay vào đó, hãy dùng unknown và thu hẹp kiểu dữ liệu (narrow the type).
• Hãy để cơ chế suy luận (inference) hoạt động. Chỉ cần chú thích kiểu tại các ranh giới như chữ ký hàm, còn lại hãy để nó tự động trôi chảy.
TypeScript đã biến các kho mã nguồn (codebases) thành các tập hợp các hợp đồng được thực thi nghiêm ngặt. Những hợp đồng này cho phép tái cấu trúc 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.
Nguồn: https://dev.to/parsajiravand/typescript-won-heres-what-that-actually-bought-us-53lo
