问题描述
我需要记录一个简单的对象,但找不到有关如何记录内部方法的 @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 构建工作正常。