2016-02-23 72 views
7

最近我一直在研究ES6,這導致我使用Babel很多。作爲一個好奇的類型,我開始研究Babel Github存儲庫,以瞭解他們如何構建這個出色的工具,並知道我是否能以某種方式貢獻自己的力量。ES6/7中是否有`declare`關鍵字?

但是,我碰到了this file,它有像declare class BabelNodeSourceLocation {}寫在它上面,文件以.js結尾。

這讓我非常困惑,現在我想知道在JavaScript中是否存在一個我不知道的declare關鍵字,還是僅僅是一個Babel特有的語法?我所有的Google搜索都沒有任何結果。

更新:把代碼放在Babel REPL沒有任何結果。 Babel只是忽略了代碼,並沒有產生任何等效的ES5輸出。它也沒有拋出任何錯誤。

+1

有趣。我認爲這是打字稿。不知道爲什麼它有'.js'擴展名。 – Jacob

回答

6

並且文件以.js結尾。

這並不意味着很多,這些天:-)

我想知道是否有一個declare關鍵字在JavaScript中,我不知道

沒有,不是。

或者這只是一個Babel特定的語法?

不是。它是Flow typechecker的type declaration file

+0

我想這很流。 –

+0

@FelixKling:你說得對。它不是'.d.ts'後綴:-) – Bergi

+0

從[Babel資源庫](https://github.com/babel/babel/blob/master/scripts/generate-interfaces.js):_「add script爲babel類型生成一個流lib文件「_ – zeroflagL

1

使用Flow,您可以聲明一個全局類,它允許您在項目中的任何位置引用類類型。這對運行時代碼沒有影響,不會影響babel輸出。

一個例子來自the docs

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

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

然後在你的項目,你可以參考網址爲類類型。

同樣,您可以聲明其他全局類型,模塊,函數,變量。讓他們有組織的好方法。

相關問題