Я немного новичок в комментариях jsdoc (пытаюсь преобразовать некоторые комментарии vsdoc в jsdoc, чтобы я мог использовать генераторы документов, поддерживающие jsdoc), поэтому остановите меня, если я делаю что-то явно неправильное, но я заметил, что если вы назначите методы прототипа конструктора, для этого члена работает intellisense:
/**
* @constructor
* @this {Foo}
*/
function Foo() {}
/**
* A bar of Foo for you.
* @param {string} baz A foo bar baz.
* @return {string} You get back what you give.
*/
Foo.prototype.bar = function(baz) { return baz; }
Но если вы назначаете bar в конструкторе, intellisense на методе bar ломается — он просто показывает весь комментарий, теги jsdoc и все в виде единого блока. Он не отображает типы аргументов и не передает возвращаемое значение через:
/**
* @constructor
* @this {Foo}
* @param {string} baz A foo bar baz.
*/
function Foo(baz) {
/**
* A bar of Foo and something else too.
* @param {string} barzipan A little something extra.
* @return {string} You get back what you gave, and then some.
*/
this.bar = function(barzipan) { return baz + barzipan; };
}
Парсер vsdoc intellisense может обрабатывать либо методы прототипа, либо методы, назначенные this, но парсер jsdoc, похоже, сбит с толку методами, назначенными this в конструкторе.