使用 Google Closure Compiler 记录回调参数

Documenting callback parameters using Google Closure Compiler

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

阅读 this answer on documenting callbacks with JSDoc 后,我尝试使用 @callback@typedef 以及 @name 标签,但是 运行 每个标签都有问题。

使用 @callback,闭包给出 "illegal use of unknown JSDoc tag" 警告:

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

@typedef,它给出"type annotation incompatible with other annotations":

/**
 * @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) 不是一个选项。有没有办法做到这一点?如果可以,怎么做?

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