在JSDoc中记录重载函数

时间:2018-03-27 22:24:58

标签: javascript jsdoc

我有一个重载的切换函数,想要记录带有JSDoc的行为。

如果定义了值,则窗口状态设置为truthy参数的布尔值,如果未定义,窗口状态将切换。我正在寻找类似的东西。

/**
 * Set the map window in mobile
 * @param {undefined|*} on - toggle or set the window state
 *  - {undefined} toggles window state
 *  - {*} set window state
 */
toggleWindow(on) {
  if (on === undefined) {
    on = !this.state.window;
  }
  this.setState({ mapWindow: !!on });
}

2 个答案:

答案 0 :(得分:2)

取自here

  

您需要像这样嵌套每个注释的开头和结尾:

/**
 * DateRange class to store ranges and query dates.
 *
 * @constructor
 * @param {(Moment|Date)} start Start of interval
 * @param {(Moment|Date)} end End of interval
 *//**
 * DateRange class to store ranges and query dates.
 *
 * @constructor
 * @param {!Array} range Array containing start and end dates.
 *//**
 * DateRange class to store ranges and query dates.
 *
 * @constructor
 * @param {!String} range String formatted as an IS0 8601 time interval
 */
function DateRange(start, end) {
  // ...
}

但是,请注意,构造函数重载没有组合在一起。每个重载仍然接收完整的成员列表,因此部分文档变得多余。可能可以在模板中修复。

答案 1 :(得分:0)

由于先前的答案对我不起作用。试试:

/** @type {((param: string) => boolean) & ((param: string, overloadedParam: string) => string))} */
const func = (param, overloadedParam) => { … }

在此归功于GitHub上ExE-Boss的答案: https://github.com/microsoft/TypeScript/issues/25590#issuecomment-480022039

(这适用于标准JS和TS)