Как ссылаться на класс модуля в JSDoc? - PullRequest
0 голосов
/ 20 февраля 2019

Как сказано в документации JSDoc для тега @type;

Каждый тип указывается с помощью выражения типа с использованием одного из форматов, описанных ниже.В соответствующих случаях JSDoc автоматически создает ссылки на документацию для других символов.Например, @type {MyClass} будет ссылаться на документацию MyClass, если этот символ был задокументирован.

Пример:

A.js:

/**
 * Class A. 
 */
class A {
    /**
     * Create a new instance of class A.
     */
    constructor(name) {
        /** @member {string} */
        this.name = name;
    }
}

module.exports = A;

B.js:

const A = require('./A.js');

/**
 * My function B.
 * @returns {A} A person.
 */
function myFuncB(n) {
    /** @type {A} */
    let i = new A(n);
    return i;
}

Обычное поведение:

В документах, генерируемых JSDoc, тип возврата этой функции (myFuncB(n) -> {A}) будет отображаться и будет ссылаться на класс A (по умолчанию ссылки выделены синим цветом с шаблоном JSDoc по умолчанию).

Опытное поведение:

Однако , это не тот случай, если класс A явно сделан членом модуля:

A.js:

/**
 * Class A. 
 * @memberof module:myModels/myModuleName
 */
class A {
    /**
     * Create a new instance of class A.
     */
    constructor(name) {
        /** @member {string} */
        this.name = name;
    }
}

module.exports = A;

(при условии, что модуль существует)

Теперь в B.js , A отображаетсяс типом any и, кроме того, функция больше не ссылается на класс A: myFuncB(n) -> {A}, но без ссылки.(«A» не содержит ссылки на документацию по классу и не выделяется синим цветом)

Нужно ли указывать модуль класса?Почему ссылка на класс А пропала?

...