Tôi có nên sử dụng Traceur thay vì Typescript để hướng tới ES5 nhưng sẵn sàng cho ES6 không
Tôi đang làm việc trên một cơ sở mã lớn có thể hưởng lợi từ Typescript, nhưng vì cuối cùng thế giới sẽ chuyển sang ES6, tôi có nên hướng phát triển về phía Traceur không?
Tôi không muốn thay đổi các triển khai Typescript để hướng tới ES6 (khi nào sẵn sàng), vì vậy cảm giác của tôi bây giờ là tiếp tục với Traceur.
Ai có thể tư vấn không?
Câu trả lời #1
Tôi chắc chắn không đồng ý với ý kiến rằng TypeScript và Traceur khác nhau nhiều đến vậy, TypeScript là ES5 có kiểu dữ liệu và Traceur chỉ là về ES6.
Một mặt, đang có một phiên bản TypeScript 2.0 tương thích ES6 đang được phát triển. Mặt khác, có một vài tính năng trong Traceur được đánh dấu là thí nghiệm trong tài liệu, cụ thể là types và annotations. Và hóa ra types rất giống với types trong TypeScript trong khi annotations thì không liên quan đến cả ES6 và TypeScript. Vì vậy Traceur chủ yếu chỉ là ES6 và đã có một tên cho điều đó: AtScript. Vâng, chúng ta lại có thêm một phần mở rộng ngôn ngữ khác :-)
Có một slide tuyệt đẹp từ bài thuyết trình của Miško Hevery cho thấy những gì đang thực sự xảy ra ở đây, hoàn toàn hợp lệ ngay khi TypeScript 2.0 được phát hành:
Vì vậy, bất cứ điều gì bạn quyết định sử dụng, điều quan trọng là lưu ý: chúng là các tập con, bạn có thể viết JS ES5/ES6 và nó sẽ là mã TypeScript hợp lệ, bạn có thể viết TypeScript và nó sẽ là mã AtScript hợp lệ.
Quay lại câu hỏi của bạn, tôi muốn đưa ra lời khuyên khiêm tốn là bắt đầu với ES6 sử dụng Traceur với các tính năng thử nghiệm tắt (nó hiện khá ổn định) và mở rộng khi cần, vì đây không phải là một quyết định quá cực đoan, không khóa bạn lại và để lại không gian để phát triển trong tương lai.
CẬP NHẬT: Vào đầu năm 2015, tôi cũng khuyên bạn nên chú ý đến dự án 6to5 (đã đổi tên thành Babel) như một sự thay thế cho Traceur. Nó phát triển rất nhanh và cung cấp một số tính năng hay, chẳng hạn như khả năng đọc mã được tạo ra và hỗ trợ tốt hơn cho node.js và các hệ thống xây dựng.
Câu trả lời #2
TypeScript và Traceur có mục tiêu hoàn toàn khác nhau và không thể so sánh theo cách bạn đang cố gắng so sánh chúng.
TypeScript là một siêu tập của EcmaScript thêm kiểu dữ liệu nghiêm ngặt. Nó bao gồm một số tính năng từ ES6, nhưng mục tiêu chính của nó là thêm kiểu dữ liệu nghiêm ngặt vào ngôn ngữ (trong khi vẫn phù hợp với ES6), không phải để cung cấp hỗ trợ ES6.
Ngược lại, Traceur là một trình biên dịch từ EcmaScript tương lai sang EcmaScript hiện tại. Nó không thêm bất cứ gì vào ngôn ngữ mà chưa được đề xuất cho phiên bản EcmaScript tiếp theo.
Nếu bạn chỉ muốn viết EcmaScript 6 ngày hôm nay, hãy dùng Traceur. Nếu bạn muốn kiểu dữ liệu nghiêm ngặt tùy chọn và tất cả lợi ích đi kèm với điều đó, cùng với một số tính năng của ES6, hãy dùng TypeScript.
