使用Google Closure Compiler记录回调参数

时间:2015-11-24 16:54:38

标签: javascript callback documentation google-closure-compiler jsdoc

如何使用Google Closure Compiler记录回调参数的名称和描述?

阅读this answer on documenting callbacks with JSDoc后,我尝试使用@callback@typedef以及@name代码,但每个代码都遇到了问题。

使用@callback,Closure会“非法使用未知的JSDoc标记”警告:

/**
 * @callback EndDrawCallback
 * @param {string} action - either "keep", "discard", or "cancel"
 * @param {boolean} saveChanges - whether to mark changes as saved
**/

使用@typedef,它会提供“与其他注释不兼容的类型注释”:

/**
 * @typedef {function(string,boolean)}
 * @param {string} action ...
 * @param {boolean} saveChanges ...
**/
var EndDrawCallback;

使用@name时,在尝试将回调名称用作类型时会发出警告“Unknown type EndDrawCallback”:

/**
 * @name EndDrawCallback
 * @function
 * @param {string} action ...
 * @param {boolean} saveChanges ...
**/

我能看到的唯一选择是

(a)在回调参数之后放弃并编写文档而不使用标签,或 (b)重构代码以将单个对象传递给具有命名属性的回调。

至少在这种情况下,(b)不是一种选择。有没有办法做到这一点?如果是这样,怎么样?

1 个答案:

答案 0 :(得分:0)

使用--extra_annotation_name标志指定编译器无法识别的JSDoc标记。由于编译器识别并使用@typedef,因此您需要使用@callback@name注释。