WebStorm 中带有 JSDoc 的选项参数的属性:“未解析的变量”

kon*_*rad 4 javascript intellij-idea jsdoc webstorm

我有一个带有 jsdoc 注释的函数,它在我的代码中类似于以下内容:

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

我的 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.fooparam 定义,因为if (!options) options = {foo: 42};会发出警告,指出分配的类型不是字符串。

我正在使用 WebStorm 7.0。

Lou*_*uis 5

Webstorm 的文档链接到 jsdoc 3。使用 jsdoc 3,我会像这样记录你的对象:

@param {{foo: string}} options
Run Code Online (Sandbox Code Playgroud)

您尝试这样做的方式暗示了一个函数签名,如function (options, options.foo).

此处提供有关如何记录类型的信息。