如何使用 JSDoc 记录 ES6 类属性

Posted

技术标签:

【中文标题】如何使用 JSDoc 记录 ES6 类属性【英文标题】:How to use JSDoc to document an ES6 class property 【发布时间】:2018-12-30 06:12:46 【问题描述】:

我正在使用documentation package,但不知道如何将其用于文档类属性(不是通过 getter 和 setter 定义的)。

因为下面只是为 SomeClass 生成类文档,但省略了 someProperty 文档。

/**
 * SomeClass is an example class for my question.
 * @class
 * @constructor
 * @public
 */
class SomeClass 
    constructor () 
        this.someProperty = true  // how do I document this?
    

    /**
     * someProperty is an example property that is set to `true`
     * @property boolean someProperty
     * @public
     */

顺便说一句:jsdoc 类上的@constructordocumentation thing。

【问题讨论】:

@instance 工作吗? 看起来不像,或者至少从我的尝试来看。 你不需要@class,因为 JSDoc 已经知道它是一个类。 【参考方案1】:

someProperty 的 JSDoc 移动到第一次定义它的构造函数中:

/**
 * SomeClass is an example class for my question.
 * @class
 * @constructor
 * @public
 */
class SomeClass 
    constructor () 
        /**
         * someProperty is an example property that is set to `true`
         * @type boolean
         * @public
         */
        this.someProperty = true
    

我不确定是否有办法通过documentation package 使用不涉及将 JSDocs 内联到构造函数中的方法来完成它。

【讨论】:

【参考方案2】:

另一种方法是在类文档中声明它们如下:

/**
 * Class definition
 * @property type propName - propriety description
 * ...
 */
class ClassName 
  constructor () ...
  ...

【讨论】:

这对我来说不适用于 VSCode 智能感知,但 balupton 的解决方案可以。 Visual Studio 2019 (16.10) 也不支持这种语法。如果这样做会很好,但在那之前,您只需将 JSDoc 信息内联与属性定义混合。 在我更新了我的 vs 代码中的某些内容后,它停止了工作,我建议转移到 typescript 以获得良好的智能感知。

以上是关于如何使用 JSDoc 记录 ES6 类属性的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 JSDoc 记录符号索引签名以符合打字稿?

如何在 JSDoc 中记录字典?

在 TypeScript 和/或 JSDoc 中,如何指示记录类型中的某些属性名称是同一类型中兄弟属性的别名?

如何使用 JSDoc 记录 CoffeeScript 源代码?

JSDoc:如何记录返回传递的构造函数实例的函数?

如何使用 jsdoc-toolkit 记录匿名函数(闭包)