Câu trả lời này là một chút của một bãi chứa não kể từ khi tôi quan tâm đến điều này cũng. Hy vọng nó giúp.
Tôi sử dụng Trình biên dịch đóng cửa của Google để phân tích tĩnh mã mà CoffeeScript tạo. Nó có một máy phân tích tĩnh thực sự tốt, và tôi không chắc chắn nếu có một lý do tốt để phát minh lại bánh xe ở đây. Cách đơn giản là chỉ cần viết các chú thích bằng tay:
###*
* @param {number} x
* @param {number} y
* @return {number}
###
adder = (x, y) -> x + y
Đó là một chút dài dòng, nhưng mặt khác bạn đang mượn khả năng phân tích tĩnh của trình biên dịch đóng cửa mà là thực sự mạnh mẽ và có khả năng kiểm tra rất nhiều. Tôi thực sự viết chú thích kiểu một cách ngắn gọn hơn một chút, sau đó có một kịch bản để viết lại tệp cà phê. Mã của tôi kết thúc như sau:
#! {number} x {number} y @return {number}
adder = (x, y) -> x + y
Tôi chắc chắn bạn có thể thấy rằng trình viết lại khá đơn giản.
Lưu ý nhanh trước khi tôi tiếp tục. Đảm bảo biên dịch mã của bạn bằng -b
(trần) nếu bạn đang chạy nó thông qua trình biên dịch đóng. Trình biên dịch đóng là khá tốt, nhưng nó không đủ thông minh để phân tích lưu lượng dữ liệu. CoffeeScript kết thúc tốt đẹp mã của bạn trong một hàm ẩn danh theo mặc định, nó sẽ làm tăng trình biên dịch.
Một tùy chọn khác dọc theo con đường tương tự (điều này sẽ phá vỡ tính tương thích với CoffeeScript, nhưng sẽ là một mát rất nhiều) sẽ có trình biên dịch cà phê biên dịch một cái gì đó như thế này:
adder = (number x, number y): number -> x + y
vào JS như thế này:
/***
* @param {number} x
* @param {number} y
* @return {number
*/
var adder = function(x, y) {
return x + y;
};
sau đó có thể được đưa vào trình biên dịch đóng trên biên dịch - nếu không có lỗi thì trình biên dịch có thể xóa tất cả nhận xét ra.
Thật vậy, this guy dường như đang thực hiện chính xác việc này. Đáng buồn thay, công việc của anh ta dường như đang ở trạng thái không đầy đủ.
Trong tất cả các trường hợp này, chúng tôi trì hoãn công việc khó khăn - kiểm tra lỗi tĩnh - đến trình biên dịch đóng. Nếu bạn không muốn làm điều này, tôi sẽ hiểu, nhưng thật khó để thuyết phục tôi rằng thật đáng giá để xây dựng một công cụ phân tích tĩnh hoàn toàn mới từ đầu. :)
CHỈNH SỬA một năm sau: Tôi chỉ sử dụng kiểu chữ những ngày này. :)
Làm cách nào để chạy jshint trên các tệp JS được tạo? Cà phê biên dịch JS và JS công cụ mà làm những gì bạn đang tìm kiếm là không chính xác không phổ biến. –