JavaScript / JSON接口描述语言

时间:2015-08-24 21:17:55

标签: javascript metadata

MDN Spider Monkey Parser API web page为例。您可以看到Javascript方法返回的对象由元语言描述。该页面中的以下代码段:

interface Node {
  type: string;
  loc: SourceLocation | null;
}

描述一个名为Node的对象,它有两个属性:typeloc。以下内容:

interface Program <: Node {
  type: "Program";
  body: [ Statement ];
}

描述另一个将从type继承属性locNode并且将具有属性body的对象。

关于此元语言

这种元语言显然用于文档目的,因为Javascript没有输入,理解对象在处理它时会暴露什么会变得非常棘手。

示例例如,如果我必须记录一个由3个成员组成的Javascript对象:一个字符串,一个int数组和一个函数,我可能会这样:

interface MyObject {
  path: string;
  indices: [int];
  evaluateScore: function;
}

这是一种记录暴露某些API的Javascript对象的聪明方法!但是在这里找不到标准!

问题我想了解有关此元语言的更多信息,但无法在Internet中找到资源。但是,为了使这个问题可回答而不是太通用,作为初学者,请考虑以下问题:

  1. 这个元语言有名字吗?
  2. 这是JavaScript / JSON的可能IDL吗?
  3. 这种元语言是否有官方规范?
  4. 如果存在规格,我在哪里可以找到它?
  5. 由于

    注意

    请注意,这个问题与AST无关。 我不关心他们!我链接的页面恰好是关于AST的,但那是因为我找不到另一个使用这种元语言记录他们的JS东西的网页或库。我只是想了解更多关于MDN在该页面中使用的元语言来记录他们的JavaScript对象以及他们公开的API。

1 个答案:

答案 0 :(得分:1)

我也花了很长时间寻找规范或这种格式的某种描述。一些项目似乎使用这种类型的IDL来记录AST,包括Babel,Handlebars和ESTree。

我在ESTree github存储库上发现了this问题,该问题表明它是一种自定义语法。我想知道这是否属实,因为很多大型项目决定使用这样的未记录语法似乎很奇怪。