Javascript JSDoc包含来自另一个@typedef对象的所有属性
如果我使用JSDoc创建两个对象,其中一个对象具有另一个对象的所有属性,我如何显示它们 例如,您将拥有:Javascript JSDoc包含来自另一个@typedef对象的所有属性,javascript,jsdoc,Javascript,Jsdoc,如果我使用JSDoc创建两个对象,其中一个对象具有另一个对象的所有属性,我如何显示它们 例如,您将拥有: /** * @typdef Foo * @type {Object} * @property {string} bar * @property {string} baz */ /** * @typedef Foobar * @type {Object} * @property {float} value * @property {string} bar * @prop
/**
* @typdef Foo
* @type {Object}
* @property {string} bar
* @property {string} baz
*/
/**
* @typedef Foobar
* @type {Object}
* @property {float} value
* @property {string} bar
* @property {string} baz
*/
但我不想写两次bar/baz,我只想继承它。我相信你会这么做
/** Type definition for Foo.
* @typdef {Object} Foo
* @property {string} bar
* @property {string} baz
*/
/** Type definition for Foobar.
* @typedef {Foo} Foobar
* @property {float} value
*/
注意
Foobar
是如何“继承”自Foo
的。您可以制作一个简单的jsdoc插件,这样就可以在typedef
上使用@augments
/@extends
。例如,可以找到这样一个插件(如下所示):
此时,您可以执行以下操作:
/**
* @typdef Foo
* @type {Object}
* @property {string} bar
* @property {string} baz
*/
/**
* @typedef Foobar
* @type {Object}
* @augments Foo
* @property {float} value
*/
如果愿意,您可以修改模板以显示继承属性与非继承属性不同():很好的示例!一个小的改进:代替
javascript prop.inherited=prop.inherited | | augmentName
最好使用javascript prop.inherited=true;prop.inherits=prop.inherits | | augmentName代码>。。。和javascript prop=Object.assign(prop)
可能应该更改为javascript prop=Object.assign({},prop)代码>复制粘贴您的示例。VSCode报告:typefoobar={bar:string;baz:string;}
/**
* @typdef Foo
* @type {Object}
* @property {string} bar
* @property {string} baz
*/
/**
* @typedef Foobar
* @type {Object}
* @augments Foo
* @property {float} value
*/