ES6/7中是否有`declare`关键字?

Kiz*_*zer 13 javascript ecmascript-6 babeljs

最近我一直在研究ES6,这导致我经常使用Babel.作为一个好奇的类型,我开始查看Babel Github存储库,了解他们如何构建这个很棒的工具,并知道我是否可以以某种方式做出贡献.

但是,我遇到了这个文件,它有类似的东西declare class BabelNodeSourceLocation {}写在它上面,文件以.js结尾.

这让我很困惑,我现在想知道JavaScript中是否有一个我不知道的声明关键字,或者这只是一个特定于Babel的语法?我的所有Google搜索都没有结果.

更新: 将代码放入Babel REPL中没有任何结果.Babel只是忽略了代码并且没有产生任何等效的ES5输出.它也没有抛出任何错误.

Ber*_*rgi 13

并且文件以.js结尾.

这些日子并不意味着很多:-)

我想知道declareJavaScript中是否有一个我不知道的关键字

不,那里没有.

或者这只是一个特定于Babel的语法?

不.它是Flow 类型检查器的类型声明文件.


Mar*_*rom 6

使用Flow,您可以声明一个全局类,允许您在项目的任何位置引用类类型.这对运行时代码没有影响,也不会影响babel输出.

来自文档的一个例子:

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

  static compare(url1: URL, url2: URL): boolean;
};
Run Code Online (Sandbox Code Playgroud)

然后在您的项目中,您可以将URL作为类类型引用.

同样,您可以声明其他全局类型,模块,函数,变量.保持组织有序的好方法.