JSDOC:如何记录简单对象中的函数

问题描述

我需要记录一个简单的对象,但找不到有关如何记录内部方法@param@returns 的文档或教程。如果我将它们放在相应的方法 (xyz) 之上,它们将被忽略,如果我将它们放在对象之上,则不会分配 @param(或者我不知道如何在此处分配它)。

假设它是一个简单的对象,如下所示:

export const foo = {

  abc: 'A string',xyz: (x) => {
    return x + '!'
  }

}

我希望这样的事情应该可行:

/**
 * @module FooModule
 */

/**
 * @type {object}
 */ 

export const foo = {

 /**
   * @property {string} abc - some property
   */ 
  abc: 'A string',/**
   * @property {function} xyz - some method
   * @param {string} x - source string
   * @returns {string} - exclamation mark added
   */ 
  xyz: (x) => {
    return x + '!'
  }

}

但这显然行不通。我找到了一个 similar question here解决方案是错误的,它根本不起作用。这应该如何正确完成,以便我得到一个模块 FooModule一个全局常量 foo,具有 foo.abc 属性foo.xyz 方法包括 @param@returns) 在输出 JSDoc 中?

能做到吗?如果是,是否可以在不@typedef这样的所有功能的情况下完成?

解决方法

看来 latest answer to other question 发现了问题。它不在 JSDoc 语法中,而是在 javascript 本身中。 JSDoc 的 @module 似乎不能与 export 指令一起使用。如果删除 @module,文档将按预期工作。如果使用 @module,则 export 必须替换为

module.exports = foo

最后。然后 JSDoc 构建工作正常。