PhpStorm 警告:参数类型不可分配给参数类型
Posted
技术标签:
【中文标题】PhpStorm 警告:参数类型不可分配给参数类型【英文标题】:PhpStorm warning: argument type not assignable to parameter type 【发布时间】:2016-08-10 18:53:00 【问题描述】:我在我的项目中的 phpStorm 中的 javascript 文件中看到一个警告,我想做一些事情。我有这样的代码:
function someFunction()
...
var myArray = [1, 2, 3, ...];
$.each(myArray, function() someOtherFunction(this); ); //warning on this line
....
/**
* @param Number value
*/
function someOtherFunction(value)
...
在代码中指出的那一行,PHP 给了我这个警告:
参数类型 someFunction 不能分配给参数类型 Number
我确实理解它的含义以及发出此警告的原因:PhpStorm 无法知道 jQuery 在 .each
循环回调中重新定义了 this
上下文。我的问题是我能做些什么来暗示这种重新定义正在发生,this
在这种情况下到底是什么?
【问题讨论】:
【参考方案1】:function someFunction()
...
var myArray = [1, 2, 3, ...];
$.each(myArray, function(i, val) someOtherFunction(val); ); //warning on this line
....
http://api.jquery.com/jquery.each/ 此处的 jQuery 文档显示回调函数的参数是实际处理值的内容。传递的第一个参数是数组索引,第二个传递的是值,这就是您要查找的值。
问题是this
永远不会只是一个原始值。 jQuery 总是把它包装成一个对象。
【讨论】:
jQuery 总是将其包装为一个对象 - 没错,但我的代码确实按预期工作。 @AleksG 哦,我确定确实如此,但问题是 PHPStorm 需要一个原始数字(或者可能是一个数字对象),而不是一个持有数字的对象。嗯,尽管试试这个。这是一个完全的猜测,但是如果你执行 someOtherFunction(+this); 会发生什么?以上是关于PhpStorm 警告:参数类型不可分配给参数类型的主要内容,如果未能解决你的问题,请参考以下文章
“header:Header;”类型的参数不可分配给“RequestOptionsArgs”类型的参数
构建:'string | 类型的参数1' 不可分配给“字符串”类型的参数
构建:'string | 类型的参数1' 不可分配给“字符串”类型的参数
JWT:'string | 类型的参数undefined' 不可分配给'Secret' 类型的参数