web-dev-qa-db-ja.com

JSDOCのtypedefパラメータを拡張する方法

ES6クラス(ドキュメント)内に次のコードがあるとします。

/**
 * @typedef Test~options
 * @type {object.<string>}
 * @property {array} elements - An array containing elements
 * @property {number} length - The array length
 */

/**
 * @param  {Test~options} opt - Option object
 */
test(opt){

}

今、私は別の関数を文書化したいと思います、それをtest2。この関数はまったく同じoptionsオブジェクトを取りますが、別のプロパティparentが必要です。

冗長なオプションを文書化せずにこれを文書化する方法は?冗長な意味:

/**
 * @typedef Test~options
 * @type {object.<string>}
 * @property {array} elements - An array containing elements
 * @property {number} length - The array length
 */

/**
 * @param  {Test~options} opt - Option object
 */
test(opt){

}


/**
 * @typedef Test~options2
 * @type {object.<string>}
 * @property {array} elements - An array containing elements
 * @property {number} length - The array length
 * @property {object} parent - The parent element
 */

/**
 * @param  {Test~options2} opt - Option object
 */
 test2(opt){

 }
25
dude

それを試してみてください

/**
 * @typedef {object.<string>} Test~options
 * @property {array} elements - An array containing elements
 * @property {number} length - The array length
 */

/**
 * @param {Test~options} opt - Option object
 */
test(opt){

}

/**
 * @typedef {Test~options} Test~options2
 * @property {object} parent - The parent element
 */

/**
 * @param  {Test~options2} opt - Option object
 */
test2(opt){

}
8
dumistoklus

私はこの解決策を見つけましたが、これは私にとって非常にうまく機能します。元々 ここ から

 /**
 * @typedef {Object} ChildType
 * @property {String} childProp
 *
 * @typedef {Base & ChildType} Child
 */
6
ajit kumar