Как документировать классы ECMA6 с помощью JSDoc?
Фон
У меня есть проект в Nodejs, использующий классы ECMA6, и я использую JSDoc для комментария моего кода, чтобы сделать его более доступным для других разработчиков.
Однако мои комментарии не очень хорошо принимаются инструментом, и моя документация-это крушение поезда.Задача
Моя проблема заключается в том, что я не знаю, как документировать классы ECMA6 с помощью JSDoc, и я не могу найти никакой приличной информации.
Что я пробовал
Я попробовал читать официальный пример , но я нахожу его недостаточным и неполным. В моих классах есть члены, постоянные переменные и многое другое, и я обычно не знаю, какие теги для чего использовать.
Я также сделал обширный поиск в интернете, но большая часть информации, которую я нашел, относится к 2015 году, когда JSDocs еще не поддерживал скрипты ECMA6. Последние статьи редки и не покрывают моих потребностей.
Самое близкое, что я нашел, был этот GitHub Выпуск:
Но к настоящему времени она устарела.Цель
Моя главная цель-научиться документировать классы ECMA6 в NodeJS с помощью JSDoc.
У меня есть точный пример, который я хотел бы видеть правильно работающим:
/**
* @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;
Вопрос
Учитывая приведенный выше пример мини-класса, как вы собираетесь документировать его с помощью JSDoc?
Пример будет оценен по достоинству.
1 ответ:
Поздний ответ, но так как я наткнулся на этот гугл что-то еще, я думал, что у меня будет трещина в этом.
Вы, вероятно, уже обнаружили, что сайт JSDoc имеет приличные объяснения и примеры того, как документировать функции ES6.
Учитывая это, вот как я бы задокументировал ваш пример:
/** * module description * @module MyClass */ //constants to be documented. //I usually use the @const, @readonly and @default tags for them /** @const {String} [description] */ const CONST_1 = "1"; /** @const {Number} [description] */ const CONST_2 = 2; //An example class /** MyClass description */ class MyClass { //the class constructor /** * constructor description * @param {[type]} config [description] */ constructor(config) { //class members. Should be private. /** @private */ this.member1 = config; /** @private */ this.member2 = "bananas"; } //A normal method, public /** methodOne description */ methodOne() { console.log( methodThree("I like bananas")); } //Another method. Receives a Fruit object parameter, public /** * methodTwo description * @param {Object} fruit [description] * @param {String} fruit.name [description] * @return {String} [description] */ methodTwo(fruit) { return "he likes " + fruit.name; } //private method /** * methodThree description * @private * @param {String} str [description] * @return {String} [description] */ methodThree(str) { return "I think " + str; } } module.exports = MyClass;
Обратите внимание, что @const подразумевает только чтение и автоматически по умолчанию. JSDoc правильно подберет экспорт, класс и конструктор, поэтому только такие странности, как private члены должны быть указаны.