【问题标题】:How to JSDoc named arguments如何使用 JSDoc 命名参数
【发布时间】:2021-04-29 22:26:06
【问题描述】:

在我的一个 JavaScript 文件中,我不得不引入一些可选参数,因此我遵循this 指南并得出以下方法声明:

function my_func({
    opt1,
    opt2 = 250,
    opt3 = "A message.",
    opt4 = null
}) {
    // Do something
}

我可以这样称呼它:

my_func({
        opt1: "boom",
        opt4: document.getElementById("some-element"),
        opt3: "A different message.",
        opt2: 200
    });

我什至可以删除一些参数并将它们按任意顺序排列。
现在,我想使用 JSDoc 对其进行记录,但我很困惑我的 JSDoc 注释会是什么样子?因为这应该定义我必须在花括号内输入参数,而且我还必须使用键。

如果我可以通过任何其他方式使用命名参数和/或可选参数,那也将不胜感激。

【问题讨论】:

  • 你没有(和 JavaScript 没有)命名参数,你有一个单一的参数,它是一个对象。
  • @jonrsharpe 感谢让我知道 JS 没有命名参数,但我的实现在某种程度上是一种解决方法。那么你能帮忙记录一下吗?
  • 我的观点是,你需要研究的是如何在 JSDoc 中记录一个 object,现有的文档、教程和 Q&A 肯定都涵盖了这一点。
  • 好的,谢谢,我会努力寻找好的资源。

标签: javascript json function jsdoc


【解决方案1】:

您可以为此使用@typedef。检查this documentation

对于您的情况:

/**
 * @typedef {Object} NameMeAsYouLike
 * @property {string} opt1 - opt1 description
 * @property {string} [opt2=250] - opt2 description
 * @property {string} [opt3=A message.] - opt3 description
 * @property {number} [opt4=null] - opt4 description
 */

/**
 * @param {NameMeAsYouLike} name me as you like 
 */
function my_func({
    opt1,
    opt2 = 250,
    opt3 = "A message.",
    opt4 = null
}) {
    // Do something
}

【讨论】:

  • 非常感谢您的回答。我也可以输入新类型属性的描述吗?喜欢@property {string} opt1 some text as description
  • 可以,我用它更新了答案。干杯?
猜你喜欢
  • 2022-12-13
  • 1970-01-01
  • 2018-01-29
  • 1970-01-01
  • 2013-10-20
  • 2021-04-17
  • 2012-12-07
  • 2018-12-21
  • 1970-01-01
相关资源
最近更新 更多