Атрибут для параметра параметров с JSDoc в WebStorm: "Неразрешенная переменная"

У меня есть функция с комментарием jsdoc, которая напоминает следующее в моем коде:

/**
 * Foo function
 * @param {Object} [options]
 * @param {String} [options.foo]
 */
var foo = function (options) {
    if (!options) options = {};
    var foo = options.foo || 'foo';
    // ...
};

Моя IDE, WebStorm, отметки options.foo как "неразрешенная переменная". Если я удалю комментарий jsdoc, предупреждение исчезнет. Как мне документировать эту функцию так, чтобы WebStorm получил подсказку и больше не отображал это предупреждение?

Скриншот

Вещи, которые я пробовал:

  • Удалить @param {String} [options.foo]
  • @param {?String} [options.foo]
  • @param {String} options.foo
  • if (!options) options = {foo: 'bar'};
  • Последние два вместе взятых.

Это ошибка или я что-то упустил? WebStorm, кажется, понимает options.foo определение параметра, потому что if (!options) options = {foo: 42}; вызывает предупреждение о том, что назначенный тип не является строкой.

Я использую WebStorm 7.0.

1 ответ

Документация Webstorm ссылается на jsdoc 3. С jsdoc 3 я бы задокументировал ваш объект следующим образом:

@param {{foo: string}} options

То, как вы пытались это сделать, подразумевает такую ​​сигнатуру функции, как function (options, options.foo),

Информация о том, как документировать типы, доступна здесь.

Другие вопросы по тегам