最近我一直在研究ES6,这导致我经常使用Babel。作为好奇的类型,我开始查看Babel Github存储库,了解他们如何构建这个非常棒的工具,并知道我是否可以以某种方式做出贡献。
但是,我遇到了this file,并且它上面写着declare class BabelNodeSourceLocation {}
之类的内容,文件以.js结尾。
这让我很困惑,我现在想知道JavaScript中是否有一个我不知道的声明关键字,或者这只是一个特定于Babel的语法?我的所有Google搜索都没有结果。
更新:将代码放入Babel REPL只会产生任何结果。 Babel只是忽略了代码并且没有产生任何等效的ES5输出。它也没有抛出任何错误。
答案 0 :(得分:12)
,文件以.js。
结尾
这些日子并不意味着很多: - )
我想知道JavaScript中是否有
declare
个关键字,我不知道
不,没有。
或者这只是Babel特有的语法?
没有。它是Flow类型检查器的type declaration file。
答案 1 :(得分:6)
使用Flow,您可以声明一个全局类,允许您在项目的任何位置引用类类型。这对运行时代码没有影响,也不会影响babel输出。
来自the docs的示例:
declare class URL {
constructor(urlStr: string): URL;
toString(): string;
static compare(url1: URL, url2: URL): boolean;
};
然后在您的项目中,您可以将URL引用为类类型。
同样,您可以声明其他全局类型,模块,函数,变量。保持组织有序的好方法。