使用 JSDoc 记录私有构造函数

Posted

技术标签:

【中文标题】使用 JSDoc 记录私有构造函数【英文标题】:Documenting a private constructor with JSDoc 【发布时间】:2015-02-10 07:39:51 【问题描述】:

我有一个类,其中可以静态调用各个方法,但会返回一个新的类实例以便链接,例如:

var builder = ns
  .setState('a', 'A')
  .setState('b', 'B');

Builder 的定义如下:

/** 
 * @module Builder 
 */

/**
 * @class Builder 
 */

/**
 * @private
 */
function Builder() 
  this.state = 
    query: 
  ;

Builder.prototype = 
  /**
   * @param string k - The key
   * @param object v - The value
   * @return Builder
   */
  setState: function(k, v) 
    var that = (this instanceof Builder) ? this : new Builder();
    that[k] = v;
    return that;
  
  // Other properties and methods…

Builder 构造函数 从不 应该由用户代码显式调用,因此我不希望它出现在文档中。但是,我用 JSDoc 标签(例如@private@constructs 等)尝试的所有组合似乎都无法从构建的文档中抑制它。

【问题讨论】:

【参考方案1】:

从 jsDoc 3.5.0 版本开始,您可以在类上使用标签@hideconstructor,告诉jsDoc 不要将构造函数包含在文档中。

/**
 * @class Builder
 *
 * @hideconstructor
 */
function Builder() 
    // implementation

【讨论】:

【参考方案2】:

您应该能够使用@ignore 指令来实现这一点。来自文档:

@ignore 标记表示代码中的符号永远不应出现在文档中。此标记优先于所有其他标记。

http://usejsdoc.org/tags-ignore.html

【讨论】:

以上是关于使用 JSDoc 记录私有构造函数的主要内容,如果未能解决你的问题,请参考以下文章

带有私有构造函数的类型的JsonSerializationException

Java中私有构造函数有啥用?

为啥我们需要私有构造函数?

带参数的Java私有构造函数[重复]

抽象类中的私有构造函数

声明构造函数私有和 =delete 有啥区别?