如何使用 jsdoc 记录函数生成器

How to document a function generator with jsdoc?

本文关键字:函数 记录 何使用 jsdoc      更新时间:2023-09-26

我正在尝试记录一个函数生成器,但没有成功,这是一个例子:

function genericObjectGenerator(tagname) {
  var specificObject = function () {};
  specificObject.getClassName = function () {
    return tagname;
  }
  specificObject.prototype.sayHello = function(name) {
    return tagname + " says hello to " + name;
  }
  return specificObject;
}
var MyObject = genericObjectGenerator("object1");
var myObjectInstance = new MyObject();
myObjectInstance.sayHello();

我应该如何记录genericObjectGenerator及其特定的对象函数,以便让JSDoc(和IntelliJ)正确解析sayHello。

这应该可以解决问题

/**
 * @param {string} tagname - the name of the tag
 * @returns {specificObject}
 */
function genericObjectGenerator(tagname) {
    var specificObject = function () {};
    specificObject.getClassName = function () {
        return tagname;
    };
    /**
     * @param {string} name - name as string
     * @returns {string}
     */
    specificObject.prototype.sayHello = function(name) {
        return tagname + ' says hello to ' + name;
    };
    return specificObject;
}
var MyObject = genericObjectGenerator('object1');
var myObjectInstance = new MyObject();
myObjectInstance.sayHello(123); // mark as warning
myObjectInstance.sayHello('123'); // not marking