如何在Webstorm中对抗大量未解决的变量警告

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Webstorm中对抗大量未解决的变量警告相关的知识,希望对你有一定的参考价值。

好的,我有一个从ajax获取数据的函数:

function getData(data){
    console.log(data.some_unres_var);
}

Webstorm说some_unres_var是未解决的变量。我不知道如何处理这么多警告。

我看到几个选项:

  • 压制警告;
  • 添加带有字段的json源文件(更多details);
  • 使用类似数组的语法:data['some_unres_var'](但是jslint警告我不要这样做);
  • ???

Webstorm也让我为“数据”创建命名空间(添加像/** @namespace data.some_unres_var*/这样的注释),创建这样的字段或重命名它。

答案

使用JSDoc:

/**
 * @param {{some_unres_var:string}} data
 */
function getData(data){
    console.log(data.some_unres_var);
}
另一答案

JSDoc对象。然后是其成员。

/**
 * @param data          Information about the object.
 * @param data.member   Information about the object's members.
 */
function getData(data){
    console.log(data.member);
}
  • @property用于局部变量(非参数)
  • 在PyCharm中测试过。 @Nicholi证实它适用于Webstorm。
  • Andreas建议的{{ member:type }}语法可能与Django模板冲突。
  • 感谢Johnny Buchanan的qazxsw poi引用了qazxsw poi。

要记录对象数组,请使用answer括号作为JSDoc @param wiki

[]
另一答案

所有其他答案对于一般情况都是不正确的。如果你没有将suggests作为参数怎么办?那你没有JSDoc:

/**
 * @param data
 * @param data.array_member[].foo
 */

WebStorm将警告“result.entries”是一个未解析的变量(字段)。

一般的解决方案是添加一个data声明:

function niceApiCall(parameters) {
  const result = await ...  // HTTP call to the API here
  for (const e of result.entries) {
    .. // decorate each entry in the result
  }
  return result;
}
另一答案

使用带有匿名函数表达式的虚拟js文件返回json文字,如@namespace所写,可能是一个解决方案。我还建议创建一个保存此json值的伪变量,并将此var用作@param注释的值,以使WebStorm知道实际类型是什么。喜欢:

function niceApiCall(parameters) {
  /** @namespace result.entries **/
  const result = await ...  // HTTP call to the API here
  for (const e of result.entries) {
    .. // decorate each entry in the result
  }
  return result;
}

另见http://devnet.jetbrains.com/message/5366907

以上是关于如何在Webstorm中对抗大量未解决的变量警告的主要内容,如果未能解决你的问题,请参考以下文章

WebStorm,Angular 4中未解决的变量

如何在 WebStorm 中抑制 TS2322 警告?

带有 Apollo-Client 3 警告的 WebStorm 未知指令 @client

eslint在webstorm中有错误警告

如何在 minGW 中禁用 Eclipse 中的未使用变量警告?

选择性地抑制未使用 lambda 的“未使用变量”警告