为特定对象定义或抑制 WebStorm 代码分析

Define or suppress WebStorm Code Analysis for a specific object

我在使用 WebStorm 代码分析工具时遇到问题。

在节点快递服务器中,我发送了一个对象:

var configSummary = {
  'siteDirs': siteDirs,
  etc...
};
res.status(200).send(configSummary);

在网络应用程序中,我使用 jQuery 要求快递服务器发回 JSON 对象:

$.getJSON('/makers/config', function(configSummary) {
  configSummary.siteDirs.forEach(etc...
})

代码运行没有错误,但是我的网络应用程序的 WebStorm 代码分析注释器非常合理地抱怨 configSummary.siteDirs 是一个未解析的变量。我知道如何通过评论来抑制编辑器中的错误,但我不喜欢这种解决方案。相反,我想教 WebStorm 关于 configSummary 对象或告诉它忽略客户端 JavaScript 文件中的 "type"。我该怎么做?

在实际数据仅在运行时已知的情况下(例如,当数据是通过 ajax 调用设置的值时),在静态分析期间无法重新解析,因此会出现错误。

无法禁止对特定错误类型的分析 - 您只能禁止对使用注释的语句进行分析。但是你可以让 IDE 知道你的数据是什么样的。 使用 JSDoc 注释的可能解决方案:

/**
 * @typedef {Object} configSummary
 * @property {Object} siteDirs
  */
...

$.getJSON('/makers/config', function (/** configSummary */ configSummary) {
    configSummary.siteDirs.forEach(...)
})

另请参阅 https://youtrack.jetbrains.com/issue/WEB-17419#comment=27-1058451, http://devnet.jetbrains.com/message/5504337#5504337 了解其他可能的解决方法。 您可以从 plugins/JavaScriptLanguage/lib/JavaScriptLanguage.jar!/com/intellij/lang/javascript/index/predefined/ 打开任何 .js 库文件以查看存根定义是什么样的