Атрибут для параметра параметров с 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)
,
Информация о том, как документировать типы, доступна здесь.