Javascript 如何应对WebStorm中大量未解决的变量警告?
我有一个从服务器获取数据的函数:Javascript 如何应对WebStorm中大量未解决的变量警告?,javascript,webstorm,Javascript,Webstorm,我有一个从服务器获取数据的函数: function getData(data){ console.log(data.someVar); } WebStorm说,someVar是一个未解析的变量。 我怎样才能摆脱这种警告呢 我看到几个选择: 抑制IDE设置中的警告 添加带有字段()的JSON源文件 使用类似数组的语法:data['some_unr_var'] 另外,WebStorm提供给我为“数据”创建名称空间(添加一个注释,如/**@名称空间数据。有些注释是*/),创建这样的字段,
function getData(data){
console.log(data.someVar);
}
WebStorm说,someVar
是一个未解析的变量。
我怎样才能摆脱这种警告呢
我看到几个选择:
- 抑制IDE设置中的警告李>
- 添加带有字段()的JSON源文件李>
- 使用类似数组的语法:
李>data['some_unr_var']
另外,WebStorm提供给我为“数据”创建名称空间(添加一个注释,如
/**@名称空间数据。有些注释是*/
),创建这样的字段,或者重命名它。使用一个带有匿名函数表达式的伪js文件,返回json文本,如中所述,可能是一个解决方案。我还建议创建一个伪变量来保存这个json值,并使用这个变量作为@param注释的值,让WebStorm知道实际的类型是什么。比如:
var jsontext = {"some_unres_var":"val"};
/** @param {jsontext} data */
function getData(data){
console.log(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中有效
- 建议的
语法可能与Django模板冲突{{member:type}
- 多亏了Jonny Buchanan引用了
要删除WebStorm IDE上的警告,只需取消选中以下检查选项:
- 未解析的Javascript函数
- 未解析的Javascript变量
对于一般情况,所有其他答案都不正确。如果没有将
数据
作为参数,该怎么办?那么您就没有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”是一个未解析的变量(字段)
一般的解决方案是添加@命名空间
声明:
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;
}
破坏使用,卢克
function getData(data){
const {member} = data;
console.log(member);
}
@hellboy快速回答:右键单击->使用Javascript库->确保选中HTML。接下来,通过查看项目设置中可用的javascript库来更好地了解发生了什么代码>当函数是匿名函数时,您将如何执行该操作?如。那么(函数(数据){…})是否有类似的方法来定义全局变量?我在我的web应用程序中引用一个外部库,我需要使用诸如
MediumEditor
之类的东西,但intellij给了我一个臭名昭著的未解析变量警告。@borislemke:这个答案对不是参数的变量不起作用。一般的解决方案是。那些不是参数的变量呢?一般的解决办法是,埃琳娜在JetBrains论坛上的建议是一个好主意。一般的解决方案是。谢谢你的解决方案。我有许多从API返回的属性,因此使用您的技术,我想我需要列出其中的许多属性,以避免出现如下错误:``/**@namespace req.headers.signaturecertchainur/@namespace req.headers.signature/@namespace req.headers.slots/@namespace req.headers.nutrientslot**/``有没有办法创建更高级别的名称空间(例如,req.headers
)并自动为其分配子名称空间?(很抱歉注释中没有格式!)为了帮助解决我遇到的一个复杂问题,如果您正在分解的变量有一个Eslint非法名称,如my_var
,您可以将其重命名:const{my_var:myVar}=data
。
function getData(data){
const {member} = data;
console.log(member);
}