如何在JSDoc中描述解构对象参数

14
如果我有一个以对象作为参数的JavaScript函数,我可以像这样使用JSDoc来描述对象的预期属性:

如果我有一个以对象作为参数的JavaScript函数,我可以像这样使用JSDoc来描述对象的预期属性:

/**
 * @param bar
 * @param bar.baz {number}
 * @param bar.qux {number}
 */
function foo(bar) {
    return bar.baz + bar.qux;
}
如果我使用 ECMAScript 6 解构定义函数,而没有给真实的参数对象命名,那么我该如何描述这些属性呢?
const foo = ({ baz, qux }) => baz + qux;

我们仍然没有一个好的答案。 - Maxwell s.c
@Maxwells.c,接受的答案有什么问题吗? - Henrik
没关系。这是一个很好的解决方案并且有效。我只是在寻找一种更简洁的方法。例如,JSDoc接受这个@param {Object} { bar, qux }。如果能够以这种方式引用bar和gux进行描述,那将会更好,代码也更少。 - Maxwell s.c
2个回答

16

原来JSDoc确实支持通过构造一个占位符名称来解构。官方文档里缺少相关说明。

http://usejsdoc.org/tags-param.html#parameters-with-properties

/**
 * @param {Object} param - this is object param
 * @param {number} param.baz - this is property param
 * @param {number} param.qux - this is property param
 */
const foo = ({ baz, qux }) => baz + qux;

在我的VSCode 1.23.1中,这个不起作用。这是VSCode的限制吗? - steph643
1
请注意,此功能的官方 JSDoc 文档现在在此处(http://usejsdoc.org/tags-param.html#parameters-with-properties)。 - steph643
这是一个关于在VSCode中无法使用此功能的特定问题,有关JSDoc注释解构参数的内容。 - steph643

0

我也曾经有同样的问题。现在我正在使用Visual Code Studio,它的插件可以做到这一点(这对我来说很合适):

/**
 * @param  {} {a
 * @param  {} b
 * @param  {} c}
 * @param  {} {d}
 */
const aaa = ({a,b,c},{d}) => {

}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接