【问题标题】:JSDoc for function parameter properties + WebStorm用于函数参数属性的 JSDoc + WebStorm
【发布时间】:2017-11-13 15:17:41
【问题描述】:

company 是下面代码中的字符串的正确 JSDdoc 声明是什么?

fetch('https://api.github.com/users/mdo').then(res => res.json()).then(res => {
  console.log(res.company);
});

我使用 WebStorm,它可以理解地将 company 下划线作为 Unresolved variable

如果我添加

/** @namespace bogus.company **/

在文件的任何地方,WebStorm 都很高兴,但这没有意义:

这是 WebStorm 中的一个错误,还是我遗漏了一些关于 JSDoc 声明应该如何工作的内容?

JSDoc 甚至应该用于这个用例吗?

【问题讨论】:

    标签: javascript webstorm jsdoc jsdoc3


    【解决方案1】:

    如果您检查unresolved javascript variable 有一个Report undeclared properties as error 选项,您可以取消选中。

    我喜欢做这样的事情:

    /**
     * @param {Object} res
     * @property {String} company
     */
    function myOutput(res) {
      console.log(res.company);
    }
    
    fetch('https://api.github.com/users/mdo')
      .then(myToJson)
      .then(myOutput);
    

    但对于小型匿名函数,我什至不会打扰。这是一个微弱的警告,所以关闭检查或学会接受它,我会说。也可以在匿名函数中填充/** @param {*} something */,但通常它只会降低可读性。

    另一种选择是使用匿名函数在您的内容根目录下的某处创建一个虚拟文件soomething.js,例如:

    (() => {
      return {
        "github-users-response" : {
          "company" : "sample"
        }
      }
    });
    

    现在 webstorm 会发现该公司实际上在您的其他文件中定义的。如果您想将其与您的项目分开,您甚至可以将其放在不同的内容根目录中。

    【讨论】:

      猜你喜欢
      • 2014-01-11
      • 2021-04-19
      • 1970-01-01
      • 2013-12-12
      • 2017-05-19
      • 2013-08-25
      • 1970-01-01
      • 2017-03-31
      相关资源
      最近更新 更多