2016-02-23 11 views
7

Gần đây tôi đã học ES6, và điều đó dẫn đến việc tôi sử dụng Babel rất nhiều. Là loại tò mò, tôi bắt đầu nhìn vào kho lưu trữ Babel Github để biết cách họ xây dựng công cụ tuyệt vời này và biết tôi có thể đóng góp bằng cách nào đó không.Có từ khoá `declare` trong ES6/7 không?

Tuy nhiên, tôi đã xem qua this file và có những thứ như declare class BabelNodeSourceLocation {} được ghi trên tất cả và tệp kết thúc bằng .js.

Điều này khiến tôi rất bối rối, và bây giờ tôi tự hỏi liệu có một từ khóa khai báo trong JavaScript mà tôi không biết hay đây chỉ là cú pháp Babel cụ thể? Tất cả các tìm kiếm trên Google của tôi không có kết quả gì.

Cập nhật: Đưa mã vào Babel REPL không có kết quả gì. Babel chỉ bỏ qua mã và không tạo ra bất kỳ đầu ra ES5 tương đương nào. Nó cũng không ném bất kỳ lỗi nào.

+1

Thú vị. Tôi nghĩ đó là bản thảo. Không chắc chắn lý do tại sao nó có phần mở rộng '.js'. – Jacob

Trả lời

6

và tệp kết thúc bằng .js.

Điều đó không có nghĩa là rất nhiều những ngày này :-)

tôi tự hỏi liệu có một từ khóa declare trong JavaScript mà tôi không biết của

Không, không phải là.

Hoặc đây chỉ là cú pháp Babel cụ thể?

No. Đây là type declaration file cho Trình kiểm tra dòng chảy.

+0

Tôi đoán đó là luồng khá. –

+0

@ FelixKling: Bạn nói đúng. Nó không phải là hậu tố '.d.ts' :-) – Bergi

+0

Từ [kho lưu trữ Babel] (https://github.com/babel/babel/blob/master/scripts/generate-interfaces.js): _" thêm tập lệnh để tạo một tệp lib luồng cho các loại babel "_ – zeroflagL

1

Với luồng, bạn có thể khai báo lớp toàn cầu cho phép bạn tham chiếu loại lớp ở bất kỳ đâu trong dự án của bạn. Điều này không ảnh hưởng đến mã thời gian chạy và sẽ không ảnh hưởng đến đầu ra của babel.

Một ví dụ từ the docs:

declare class URL { 
    constructor(urlStr: string): URL; 
    toString(): string; 

    static compare(url1: URL, url2: URL): boolean; 
}; 

Và rồi trong dự án của bạn, bạn có thể tham khảo URL như một kiểu lớp.

Tương tự, bạn có thể khai báo các loại, mô-đun, hàm, biến toàn cục khác. Một cách hay để giữ cho chúng được tổ chức.

Các vấn đề liên quan