【问题标题】:How can I use a JSDoc comment to eliminate an "Unresolved function or method" warning in WebStorm or other JetBrains products?如何使用 JSDoc 注释消除 WebStorm 或其他 JetBrains 产品中的“未解析的函数或方法”警告?
【发布时间】:2019-09-05 13:54:45
【问题描述】:

在 WebStorm、PyCharm 和其他 JetBrains 产品中,您可以使用 JSDoc cmets 通知 WebStorm 对象确实具有特定属性,从而消除警告。

@namespace@property 都适用于普通对象属性,但我找不到适用于函数的 JSDoc 命令。

const query = require(...);
...
Object.keys(record)
    .forEach(col => {
        query.set(col, record[col]);
    });

在上面的 sn-p 中,.set(...) 无法被 WebStorm 识别并产生 Unresolved function or method 警告。

这只是一个例子。我的项目使用多个第三方库,其中许多库具有触发使用警告的对象方法。这些库没有可用的 typescript 定义,WebStorm 的文件分析也无法识别它们。

我无法修改查询对象,也无法更改它的导入方式。是否可以添加 JSDoc 注释来消除警告?我尝试了 @property@param@namespace@member 的多种变体。

注意事项:

我知道可以通过在函数使用正上方的行上使用// noinspection JSUnresolvedFunction 来禁用警告,但这是一个较差的解决方案。 JSDoc cmets 可以放置在多个范围内,例如类或函数定义的开头。 JSDoc 解决方案还提高了可读性,并在其他非 JetBrains IDE 中有意义。

【问题讨论】:

  • 我想在导入上方添加/** @type {...} */ 应该可以工作
  • 这个建议奏效了。对于上面的示例代码,我需要在const query = require... 上方直接添加/** @type {Object} query; @property {Function} query.set */。如果你想写你的评论作为答案,我会接受,否则我会自己做一个答案。
  • 谢谢,我添加了更多扩展答案

标签: ide webstorm jetbrains-ide jsdoc


【解决方案1】:

JSDoc 提供了使用@type 显式注释符号的方法

所以在你的例子中可能是:

/** @type {QueryObjectTypeDef} */
const query = require(...);

使用函数参数的内联注释也可以实现相同的效果(在 WebStorm 中测试):

forEach((/* ColTypeDef */ col) => {...})

【讨论】:

    猜你喜欢
    • 2018-11-26
    • 2019-01-25
    • 2021-11-15
    • 1970-01-01
    • 2017-12-02
    • 2017-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多