繁体   English   中英

如何在 JSDOC 中扩展 typedef 参数?

[英]How to extend a typedef parameters in JSDOC?

我有一个 typedef 的 JSDoc 注释,如下所示,

/**
 * @typedef {Object} obj1
 * @property {boolean} a - Property 1
 * @property {boolean} b - Property 2
 */

我想要一个新的 typedef,它还包括以下属性:

* @property {boolean} c - Property 3
* @property {boolean} d - Property 4

除了ab之外,如何向 object 添加任何其他属性?

在代码中,它是这样的:

const obj1 = {
  a: true,
  b: false
}

const obj2 = {
  a: true,
  b: false,
  c: true,
  d: false
}

如您所见, ab是共享的,所以我不想重复定义它们,它们完全相同。

如何向现有定义添加属性?

在代码中,我们可以这样做:

const obj2 = {
  ...obj1,
  c: true,
  d: false
}

我们可以做类似下面的 jsDoc 的事情吗?

/**
 * @typedef {Object} obj1
 * @property {boolean} a - Property 1
 * @property {boolean} b - Property 2
 */

/**
 * @typedef {Object} obj2
 * @property {...obj1}
 * @property {boolean} c - Property 3
 * @property {boolean} d - Property 4
 */

??

解决方法很简单:

它是通过使用这种语法:

/** 
 * @typedef {Obj1Props & Obj2Props} obj2
*/

完整解决方案:

/**
 * @typedef {Object} Obj1Props
 * @property {boolean} a - Property 1
 * @property {boolean} b - Property 2
 */

/**
 * @typedef {Object} Obj2Props
 * @property {boolean} c - Property 3
 * @property {boolean} d - Property 4
 */

/** 
 * @typedef {Obj1Props & Obj2Props} obj2
*/

/** @type {Obj1Props} */
const obj1 = {
  a: true,
  b: false
}

/** @type {obj2} */
const obj2 = {
  a: true,
  b: false,
  c: true,
  d: false
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM