如何在JSDoc生成的构造器文档中添加命名空间前缀?
解决JSDoc构造器文档缺失命名空间前缀的问题
针对你ES5非模块化项目中JSDoc生成的构造器文档缺少ct.前缀的问题,用原生JSDoc标签就能解决,不需要自定义模板或额外插件,具体方法如下:
核心方案:用@name标签指定完整类名
在你的Checkbox类注释中,添加@name ct.Checkbox标签,明确告诉JSDoc这个类的完整带命名空间的名称。修改后的注释代码如下:
/** * @name ct.Checkbox * @memberof ct * @class * @classdesc A checkbox input entity * @extends ct.Base * * @param opts {ct.Checkbox#Options} */ ct.Checkbox = function(opts) { ct.Init(this, arguments); }; ct.Checkbox.prototype = ct.Inherit(ct.Base, /** @lends ct.Checkbox.prototype */ { /** @type string */ _id: null, /** @type boolean */ _value: null, // 其他原型方法 });
原理说明
你原来的注释中@memberof ct只是声明了类属于ct命名空间,但因为构造函数是匿名函数赋值给ct.Checkbox,JSDoc默认只会提取类名Checkbox作为构造器显示名称。加上@name ct.Checkbox后,JSDoc会直接使用这个完整名称生成构造器文档,最终显示为new ct.Checkbox(opts),和你的实际调用方式一致。
备选方案:用@constructs标签指定构造器名称
如果你更倾向于用构造函数的方式声明,也可以替换@class为@constructs ct.Checkbox,效果相同:
/** * @memberof ct * @constructs ct.Checkbox * @classdesc A checkbox input entity * @extends ct.Base * * @param opts {ct.Checkbox#Options} */ ct.Checkbox = function(opts) { ct.Init(this, arguments); };
这两种方法都不需要使用@hideconstructor或额外插件,原生JSDoc就能处理。
内容的提问来源于stack exchange,提问作者Barn on a Hill
相关产品推荐
相关产品推荐

