Использование JSDoc для документирования класса экспорта модуля - PullRequest
1 голос
/ 12 октября 2019

Простой класс в модуле CommonJS имеет следующие комментарии JSDoc:

/** 
 * Class representing a list of items.
 * */
module.exports = class List {  

    /**
     * Create a list.
     */
    constructor(){
        this.items = [];
    }

    /**
     * Add an item to the list.
     * @param {String} item - The name of the eitem.
     * @param {Number} qty - The number of items to add.
     */
    add(item, qty) {
        var data = {item: item, qty: qty};
        this.items.push(data);
    }

    /**
     * Return the list of items.
     * @return {Array.<{item: String, qty: Number}>} An array containing the items.
     */
    getAll(){
        return this.items.map( (element, index) => ({key: index, item: element.item, qty: element.qty}));
    }

    /**
     * Delete a single item.
     * @param {Number} id - The index to be deleted.
     */
    delete(id){
        this.items.splice(id, 1);   
    }

    /**
     * Return the number of items in the list.
     * @return {Number} The number of items.
     */
    count(){
        return this.items.count;
    }

}

Когда я генерирую документацию, я теряю имя класса. Вместо того, чтобы называться List , он помечается как exports , см. Скриншот ниже. Как сделать так, чтобы инструмент правильно пометил модуль как Список ? enter image description here

1 Ответ

1 голос
/ 12 октября 2019

Попробуйте с помощью:

/**
 * Class representing a list of items.
 * */
class List {

    /**
     * Create a list.
     */
    constructor(){
        this.items = [];
    }

    /**
     * Add an item to the list.
     * @param {String} item - The name of the eitem.
     * @param {Number} qty - The number of items to add.
     */
    add(item, qty) {
        var data = {item: item, qty: qty};
        this.items.push(data);
    }

    /**
     * Return the list of items.
     * @return {Array.<{item: String, qty: Number}>} An array containing the items.
     */
    getAll(){
        return this.items.map( (element, index) => ({key: index, item: element.item, qty: element.qty}));
    }

    /**
     * Delete a single item.
     * @param {Number} id - The index to be deleted.
     */
    delete(id){
        this.items.splice(id, 1);
    }

    /**
     * Return the number of items in the list.
     * @return {Number} The number of items.
     */
    count(){
        return this.items.count;
    }

}

module.exports = {
    List
};

это синтаксический сахар для

module.exports = {
    'List': List
};

Будет добавлено имя «Список», которого не было

...