将 VJET 类型注释转换为闭包类型注释

Translating VJET type annotations into Closure type annotations

本文关键字:类型 注释 闭包 转换 VJET      更新时间:2023-09-26

EBay的VJET和Google的Closure Compiler都在Javascript注释中使用类型注释。

为什么他们选择了不兼容的语法?

威捷

function add(a, b) {  //< Number add(Number, Number)
    return a + b ;
}

谷歌关闭

/**
 * Queries a Baz for items.
 * @param {number} groupNum Subgroup id to query.
 * @param {string|number|null} term An itemName,
 *     or itemId, or null to search everything.
 */
goog.Baz.prototype.query = function(groupNum, term) {
  ...
};

有没有办法自动将VJET类型注释转换为Google闭包类型注释?

没有一种自动方法可以将 vjetdocs 转换为 jsdocs,但这里是查询 API 的手动翻译。首先,我将从闭包的jsdoc翻译成vjetdoc,然后再回来向您展示差异。

/**
 * Queries a Baz for items.
 * @param {number} groupNum Subgroup id to query.
 * @param {string|number|null} term An itemName,
 *     or itemId, or null to search everything.
 */

VJET 文档中的 groupNum 是第一个位置,类型将是数字(不是数字)vjet 使用区分大小写的 EcmaScript 标准类型名称。

itemName 是 VJET doc 将是一个混合类型,可以是数字或字符串。对于 VJETDoc,当前没有名为 Null 的默认类型。如果有 Null 数据类型,它将是大写的。我认为这应该添加到 VJET 中,但可以传入 null,VJET 不会抱怨下面的声明。

你可以在 vjetdoc 中编写它,无论是否带有函数和参数的名称(如果你不想重复自己......位置接管。

// shortest form
function query(groupNum, itemName) {  //< void (Number, {String|Number}?)
}
//
// longer form - on same line as declaration
function query(groupNum, itemName) {  //< void query(Number groupNum, {String|Number}? itemName)
}
// longer form mixed with jsdocs
/**> void query(Number groupNum, {String|Number}? itemName);
 * 
 * Queries a Baz for items.
 * @param {number} groupNum Subgroup id to query.
 * @param {string|number|null} term An itemName,
 *     or itemId, or null to search everything.
*/
function query(groupNum, itemName) {  
}

query(10,"test");
query(30,20);
query(20,null);