title: How to document ECMA6 classes with JSDoc?
body: <h2>Background</h2>
  
  <p>I have a project in Nodejs using ECMA6 classes and I am using <a href="http://usejsdoc.org/" rel="noreferrer">JSDoc</a> to comment my code, as to make it more accessible to other developers. </p>
  
  <p>However, my comments are not well accepted by the tool, and my documentation is a train wreck. </p>
  
  <h2>Problem</h2>
  
  <p>My problem is that I don't know how to document ECMA6 classes with JSDoc and I can't find any decent information. </p>
  
  <h2>What I tried</h2>
  
  <p>I tried reading <a href="http://usejsdoc.org/howto-es2015-classes.html" rel="noreferrer">the official example</a> but I find it lacking and incomplete. My classes have members, constant variables and much more, and I don't usually know which tags to use for what. </p>
  
  <p>I also made an extensive search in the web, but most information I found is prior to 2015 where JSDocs didn't support ECMA6 scripts yet. Recent articles are scarce and don't cover my needs. </p>
  
  <p>The closest thing I found was this GitHub Issue:</p>
  
  <ul>
  <li><a href="https://github.com/jsdoc3/jsdoc/issues/819" rel="noreferrer">https://github.com/jsdoc3/jsdoc/issues/819</a></li>
  </ul>
  
  <p>But it is outdated by now. </p>
  
  <h2>Objective</h2>
  
  <p>My main objective is to learn how to document ECMA6 classes in NodeJS with JSDoc. </p>
  
  <p>I have a precise example that I would like to see work properly:</p>
  
  <pre><code>/**
   * @fileOverview What is this file for?
   * @author Who am I?
   * @version 2.0.0
   */
  
  "use strict";
  
  //random requirements. 
  //I believe you don't have to document these.
  let cheerio = require('cheerio');
  
  //constants to be documented. 
  //I usually use the @const, @readonly and @default tags for them
  const CONST_1 = "1";
  const CONST_2 = 2;
  
  //An example class
  class MyClass {
  
      //the class constructor
      constructor(config) {
          //class members. Should be private. 
          this.member1 = config;
          this.member2 = "bananas";
      }
  
      //A normal method, public
      methodOne() {
         console.log( methodThree("I like bananas"));
      }
  
      //Another method. Receives a Fruit object parameter, public
      methodTwo(fruit) {
          return "he likes " + fruit.name;
      }
  
      //private method
      methodThree(str) {
         return "I think " + str;
      }
  }
  module.exports = MyClass;
  </code></pre>
  
  <h2>Question</h2>
  
  <p>Given this mini class example above, how would you go about documenting it using JSDoc?</p>
  
  <p>An example will be appreciated.</p>