如何在Webstorm中处理大量未解决的variables警告

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

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

Webstorm说some_unres_var – 是未解决的variables。 我不知道如何处理这样的警告。

我看到几个选项:

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

Webstorm也为我提供了为“数据”创build命名空间的function(添加类似/** @namespace data.some_unres_var*/的注释),创build这个字段或者重命名它。

使用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); } 
  • 在PyCharmtesting。 @Nicholi证实了它在Webstorm中的作用。
  • Andreasbuild议的{{ member:type }}语法可能与Django模板冲突。
  • 感谢Jonny Buchanan的引用@param wiki 。

为了logging对象数组, JSDoc使用[]括号表示 :

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

使用具有匿名函数expression式的虚拟js文件返回json文字,如写在http://devnet.jetbrains.com/message/5366907 ,可能是一个解决scheme。 我也可以build议创build一个假的variables来保存这个json值,并使用这个var作为@param注释的值来让WebStorm知道实际的types是什么。 喜欢:

 var jsontext = {"some_unres_var":"val"}; /** @param {jsontext} data function getData(data){ console.log(data.some_unres_var); } 

另见http://devnet.jetbrains.com/message/5504337#5504337

所有其他答案对一般情况不正确。 如果你不把data作为参数呢? 那么你没有JSDoc:

 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; } 

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

一般的解决scheme是添加一个@namespace声明:

 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; }