我在使用jQuery-1.4.3 externs文件时特别看到了这一点。其中的javadoc读取
/**
* @param {(string|number|function(number,number))=} arg1
* @return {(number|jQueryObject)}
* @nosideeffects
*/
jQueryObject.prototype.width = function(arg1) {};
我有一个看起来像这样的电话:
var w = $(window).width();
$('#whatever').width(w)
关闭抱怨: 警告 - jQueryObject.prototype.height的实际参数1与形式参数不匹配 发现:(jQueryObject | null | number) 必需:(函数(数字,数字):?| number | string | undefined) $( '#Xobni的')的高度($(窗口).height());
从播放(删除可能的返回类型),我可以看到问题是第一次调用width可能返回一个jQueryObject,因为那不是一个有效的输入,Closure给了我一个错误。我尝试添加这个:
/**
* @type {number}
*/
var w = $(window).width();
$('#Xobni').width(w);
然后Closure抱怨: 警告 - 初始化变量 发现:(jQueryObject | null | number) 要求:数量 var w = $(window).width();
问题是当width接受一个参数时,它会返回一个jQueryObject。当它不参数时,它返回一个数字。所以我知道我的电话没问题,但javadocs并没有完全反映出来,因此Closure警告我。有没有办法适当地修复javadoc或告诉Closure我知道这个结果将是一个数字。我知道我可以抑制错误,但我想知道如何更好地注释这些东西。
感谢您的帮助!
答案 0 :(得分:8)
您可以按如下方式覆盖:
var w = /** @type {number} */ ($(window).width());
$('#whatever').width(w)
答案 1 :(得分:2)
试试这个:
var w = $(window).width();
w = parseInt(w.toString());
$('#whatever').width(w);
或者这个:
var w = $(window).width() + '';
$('#whatever').width(w);