Comment documenter les propriétés de l'objet dans la balise JSDoc 3: @this

@param tag autorise la documentation des propriétés, par exemple

 /**
  * @param {Object} userInfo Information about the user.
  * @param {String} userInfo.name The name of the user.
  * @param {String} userInfo.email The email of the user.
  */

Comment puis-je documenter les propriétés de la balise @this?

 /**
  * @this {Object} 
  * @param {String} this.name The name of the user.
  * @param {String} this.email The email of the user.
  */

je me demande si quelqu'un qui travaille sur le projet est au courant. (Les documents sont toujours en cours de création...)

28
demandé sur BuZZ-dEE 2012-05-08 03:54:44

3 réponses

document les membres de l'instance, utilisez @name Class#member:

/**
  Construct a new component

  @class Component
  @classdesc A generic component

  @param {Object} options - Options to initialize the component with
  @param {String} options.name - This component's name, sets {@link Component#name}
  @param {Boolean} options.visible - Whether this component is vislble, sets {@link Component#visible}
*/
function Component(options) {
  /**
    Whether this component is visible or not

    @name Component#visible
    @type Boolean
    @default false
  */
  this.visible = options.visible;

  /**
    This component's name

    @name Component#name
    @type String
    @default "Component"
    @readonly
  */
  Object.defineProperty(this, 'name', {
    value: options.name || 'Component',
    writable: false
  });
}

il en résulte un Membres section dans la documentation qui liste chaque membre, son type, sa valeur par défaut, et s'il est lu seulement.

La sortie généré par jsdoc@3.3.0-alpha3 ressemble à ceci:

JSDoc3 output

Voir aussi:

42
répondu lazd 2014-01-23 19:10:35

@property balise pour décrire l'attribut d'un objet.

@param est utilisé pour définir les paramètres d'une méthode ou d'un constructeur.

@this est utilisé pour définir l'objet this se réfère à. Voici donc un exemple d'utilisation de JSDOC 3.

/**
* @class Person
* @classdesc A person object that only takes in names.
* @property {String} this.name - The name of the Person.
* @param {String} name - The name that will be supplied to this.name.
* @this Person
*/
var Person = function( name ){
    this.name = name;
};

JSDOC 3: https://github.com/jsdoc3/jsdoc

Plus d'informations: http://usejsdoc.org/index.html

plus d'information: http://code.google.com/p/jsdoc-toolkit/wiki/TagParam

4
répondu Larry Battle 2012-05-31 22:25:58

au sein du constructeur d'une classe, jsdoc se rendra compte par lui-même que les propriétés documentées appartiennent à des intances de classe. Donc, cela devrait être suffisant:

/**
 * @classdesc My little class.
 *
 * @class
 * @memberof module:MyModule
 * @param {*} myParam Constructor parameter.
 */
function MyLittleClass(myParam) {
    /**
     * Instance property.
     * @type {string}
     */
    this.myProp = 'foo';
}

Si c'est pas clair pour jsdoc que la fonction est le constructeur de la classe, vous pouvez utiliser @this pour définir ce qu' this renvoie:

/**
 * @classdesc My little class.
 *
 * @class
 * @memberof module:MyModule
 * @name MyLittleClass
 * @param {*} myParam Constructor parameter.
 */

// Somewhere else, the constructor is defined:
/**
 * @this module:MyModule.MyLittleClass
 */
function(myParam) {
    /**
     * Instance property.
     * @type {string}
     */
    this.myProp = 'foo';
}
1
répondu Ignitor 2016-07-15 13:31:42