Có thể đây là ý kiến không phải ai cũng đồng ý, nhưng tôi nghĩ rất rõ: khi mục tiêu là giao phần mềm thật, chứ không chỉ viết code để trình diễn, TypeScript là ngôn ngữ tốt nhất cho Codex.
Không phải vì TypeScript có gì thần kỳ. Lý do thực tế hơn nhiều: các công cụ coding bằng AI thường làm việc tốt hơn trong môi trường có ràng buộc rõ ràng và tín hiệu mạnh. Codebase càng bộc lộ cấu trúc rõ bao nhiêu, mô hình càng phải đoán ít bấy nhiêu. Và khi phải đoán ít hơn, việc điều hướng đầu ra về phía code có thể sống được trong production cũng dễ hơn hẳn.
Vì sao TypeScript hợp với các công cụ coding AI đến vậy
Trong một codebase JavaScript lỏng lẻo, mô hình có thể tạo ra đoạn code trông khá thuyết phục nhưng lại âm thầm phá vỡ những giả định quan trọng. Code có thể vẫn chạy, nhưng điều đó không có nghĩa là nó phù hợp với kiến trúc, tôn trọng hình dạng dữ liệu hay tránh được những regression tinh vi. Rất nhiều đoạn code “trông có vẻ thông minh” nhưng về sau lại tốn kém để bảo trì thường xuất phát từ đúng kiểu tình huống này.
TypeScript làm giảm sự mơ hồ đó. Type hoạt động như hợp đồng. Interface thể hiện ý đồ thiết kế. Compiler phản hồi ngay lập tức. Các refactor lớn cũng bớt mù mờ hơn. Với Codex, điều đó có nghĩa là bớt ứng biến và có nhiều vòng lặp được định hướng hơn.
- Hợp đồng rõ ràng: function, object và API được mô tả minh bạch hơn.
- Phản hồi typecheck ngay lập tức: mô hình sửa nhanh hơn khi hệ thống trả về lỗi cụ thể.
- Refactor lớn an toàn hơn: những thay đổi rộng dễ kiểm chứng hơn trên codebase thật.
- Tín hiệu kiến trúc rõ hơn: type làm lộ ra các quan hệ vốn trước đó chỉ nằm ngầm bên trong.
Lợi thế thật sự nằm ở vòng phản hồi
Workflow mạnh nhất khi coding với AI đến giờ vẫn rất đơn giản: edit, typecheck, lint, test, fix. Khi mục tiêu là chất lượng production, vòng lặp này quan trọng hơn nhiều so với những prompt nghe có vẻ thông minh. Một hệ thống engineering tốt thường đáng tin hơn thứ sáng tạo mơ hồ.
Đó cũng là lý do JavaScript thường cho AI quá nhiều khoảng trống để ứng biến. Khi không có đủ ràng buộc, mô hình sẽ lấp chỗ trống bằng những phỏng đoán rất tự tin. Đôi khi điều đó hữu ích. Nhưng đôi khi nó tạo ra những lỗi âm thầm chỉ lộ ra rất muộn, lúc chi phí sửa chữa đã cao hơn nhiều.
TypeScript không loại bỏ hoàn toàn sai sót, nhưng nó thu hẹp không gian tìm kiếm. Nó cho mô hình ranh giới, tăng tốc độ sửa lỗi và đưa ra một bản đồ dễ đọc hơn nhiều về hệ thống mà nó đang thay đổi.
Shipping quan trọng hơn demo
Nếu mục tiêu chỉ là làm prototype nhanh, gần như ngôn ngữ nào cũng có thể dùng được. Nhưng nếu mục tiêu là giao sản phẩm liên tục, refactor sạch hơn và ít lỗi ẩn hơn, thì các ràng buộc hình thức mạnh hơn sẽ trở thành lợi thế rất thực tế.
Đó là lý do tôi liên tục quay lại với TypeScript trong phát triển có AI hỗ trợ. Đây không phải chuyện thần tượng ngôn ngữ. Đây là chuyện khả năng kiểm soát. Ít đoán hơn. Ít hỏng ngầm hơn. Tốc độ engineering đáng tin cậy hơn.