【发布时间】: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