【问题标题】:Document JavaScript with optional first parameter使用可选的第一个参数记录 JavaScript
【发布时间】:2017-12-20 09:48:19
【问题描述】:

我正在尝试记录其中一个在 JavaScript 中具有可选 first 参数的烦人函数。

类似于express 中的函数.use()

function use(path, callback) // path is optional

我正在尝试找到一些可行的方法,并且最好不要太丑。

我对实际代码签名的偏好是这样的:

function use(...args) {
  const [callback, path] = args.reverse();
}

在这种情况下,我没有两个参数,所以如果我尝试使用两个 @param 行,我会在 JSDoc 块中被骂:

/**
 * @param {String=} path
 * @param {Function} callback
 */
function use(...args) // mismatched parameters

如果我按预期使用参数并使用不同的模式来放置参数,我会被(WebStorm)大喊大叫,因为callback 不是String

/**
 * @param {String=} path
 * @param {Function} callback
 */
function use(path, callback) {
  if (typeof path == 'function') {
    callback = path; // yelled at because callback can't be a string
    path = undefined;
  }
}

我用谷歌搜索了很多旧的东西,不同的人在争论这个问题,但没有明确的答案。由于帖子较旧并且发生了很多事情,我想重新问一下:有没有办法记录这一点,所以一切都很愉快(至少在 WebStorm 中),或者是否有一些新的 ES# 语法允许可选的第一个参数(可以生成正确的自动完成)?

【问题讨论】:

  • 这是你切换到 flow 或 typescript 的地方 ;)
  • 或者当人们使用这种愚蠢的反向可选参数模式时就开始踢他们的小腿。我喜欢 vanilla JS,但首先普及这种模式的人……不是我最喜欢的人。 =p
  • 在一个半相关的注释上:您可能想查看@callback 标签 - usejsdoc.org/tags-callback.html
  • 谢谢。是的,我知道@callback。为了简洁起见,我只是使用了Function

标签: javascript webstorm jsdoc


【解决方案1】:
@param {(String=|Function=)} path

可能是您正在寻找的。

【讨论】:

  • 我知道这个,它可能是我能得到的最接近的......但它太丑了。然后我必须解释“如果它是一个函数,它实际上是回调”。
  • 是的,因此@callback 使内容更加明确。此外,将第二个参数也标记为可选参数可能会提供一些提示。我完全同意整个事情都是超级愚蠢的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-09-08
  • 1970-01-01
  • 1970-01-01
  • 2021-02-27
  • 1970-01-01
  • 2013-05-24
  • 2014-02-28
相关资源
最近更新 更多