jsdoc - 为多个功能重用文档?
jsdoc - Reuse docs for multiple functions?
我有一个包含大量选项的函数:
/**
* Show dialog in a blocking manner.
*
* @param {object} opts
* @param {string} opts.msg "Body" of the dialog.
* @param {number} opts.timeout Seconds - floating point values are rounded. (ActiveX imposes this)
* @param {string} opts.title Title of the dialog.
* @param {number} opts.icon Use constants for this. (See docs)
* @param {number} opts.buttons Use constants for this. (See docs)
* @param {number} opts.defaultButton Use constants for this. (See docs)
* @returns {number} Use our constants to check for what the user chose.
*/
const showSync = (opts) => {
...
}
但我也有这个函数的非阻塞版本,显然采用相同的选项和 returns Promise。 copy/paste 文档似乎很脏,因为这会降低可维护性和意外不一致的可能性。
所以像下面这样的东西会很棒:
/**
* Shows dialog in a non-blocking manner.
*
* @inheritdoc showSync
* @returns {Promise<number>} Use our constants to check for what the user chose.
*/
const show = (opts) => {
...
}
这有可能吗?
[更新]
这不是 的重复,因为那个问题只是关于重用相同的定义,而这个问题是关于重用但也部分覆盖该定义。因此,那里的答案并没有回答这里的问题。
我认为使用 jsdoc 的最佳方式是这样的:
/**
* Options for showing a dialog.
* @typedef {Object} ShowOptions
* @property {string} msg "Body" of the dialog.
* @property {number} timeout Seconds - floating point values are rounded. (ActiveX imposes this)
* @property {string} title Title of the dialog.
* @property {number} icon Use constants for this. (See docs)
* @property {number} buttons Use constants for this. (See docs)
* @property {number} defaultButton Use constants for this. (See docs)
*/
/**
* Show dialog in a blocking manner.
*
* @param {ShowOptions} opts
* @returns {number} Use our constants to check for what the user chose.
*/
const showSync = (opts) => {...}
/**
* Shows dialog in a non-blocking manner.
*
* @param {ShowOptions} opts
* @returns {Promise<number>} Use our constants to check for what the user chose.
*/
const show = (opts) => {...}
您可以更进一步,将类似的概念也应用于 return 值:
/**
* Use our constants to check for what the user chose.
* @typedef {number} ShowResult
*/
/**
* Show dialog in a blocking manner.
*
* @param {ShowOptions} opts
* @returns {ShowResult}
*/
const showSync = (opts) => {...}
/**
* Shows dialog in a non-blocking manner.
*
* @param {ShowOptions} opts
* @returns {Promise<ShowResult>}
*/
const show = (opts) => {...}
我有一个包含大量选项的函数:
/**
* Show dialog in a blocking manner.
*
* @param {object} opts
* @param {string} opts.msg "Body" of the dialog.
* @param {number} opts.timeout Seconds - floating point values are rounded. (ActiveX imposes this)
* @param {string} opts.title Title of the dialog.
* @param {number} opts.icon Use constants for this. (See docs)
* @param {number} opts.buttons Use constants for this. (See docs)
* @param {number} opts.defaultButton Use constants for this. (See docs)
* @returns {number} Use our constants to check for what the user chose.
*/
const showSync = (opts) => {
...
}
但我也有这个函数的非阻塞版本,显然采用相同的选项和 returns Promise。 copy/paste 文档似乎很脏,因为这会降低可维护性和意外不一致的可能性。
所以像下面这样的东西会很棒:
/**
* Shows dialog in a non-blocking manner.
*
* @inheritdoc showSync
* @returns {Promise<number>} Use our constants to check for what the user chose.
*/
const show = (opts) => {
...
}
这有可能吗?
[更新]
这不是
我认为使用 jsdoc 的最佳方式是这样的:
/**
* Options for showing a dialog.
* @typedef {Object} ShowOptions
* @property {string} msg "Body" of the dialog.
* @property {number} timeout Seconds - floating point values are rounded. (ActiveX imposes this)
* @property {string} title Title of the dialog.
* @property {number} icon Use constants for this. (See docs)
* @property {number} buttons Use constants for this. (See docs)
* @property {number} defaultButton Use constants for this. (See docs)
*/
/**
* Show dialog in a blocking manner.
*
* @param {ShowOptions} opts
* @returns {number} Use our constants to check for what the user chose.
*/
const showSync = (opts) => {...}
/**
* Shows dialog in a non-blocking manner.
*
* @param {ShowOptions} opts
* @returns {Promise<number>} Use our constants to check for what the user chose.
*/
const show = (opts) => {...}
您可以更进一步,将类似的概念也应用于 return 值:
/**
* Use our constants to check for what the user chose.
* @typedef {number} ShowResult
*/
/**
* Show dialog in a blocking manner.
*
* @param {ShowOptions} opts
* @returns {ShowResult}
*/
const showSync = (opts) => {...}
/**
* Shows dialog in a non-blocking manner.
*
* @param {ShowOptions} opts
* @returns {Promise<ShowResult>}
*/
const show = (opts) => {...}