10

我在使用 jQuery-1.4.3 externs 文件时特别看到了这一点。的javadocs读取

/**
 * @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) required: (function (number, number): ?|number|string|undefined) $('# Xobni').height($(window).height());

通过玩弄(删除可能的返回类型),我可以看到问题是对宽度的第一次调用可能会返回一个 jQueryObject,并且由于这不是有效的输入,所以 Closure 给了我一个错误。我试着添加这个:

/**
 * @type {number}
 */
var w =  $(window).width();
$('#Xobni').width(w);

但随后闭包抱怨:警告 - 找到初始化变量:(jQueryObject|null|number) required: number var w = $(window).width();

问题是当宽度接受一个参数时,它返回一个 jQueryObject。当它不带参数时,它返回一个数字。所以我知道我的电话没问题,但 javadocs 并没有完全反映这一点,所以 Closure 警告我。有没有办法适当地修复 javadocs 或者告诉 Closure 我知道这个结果将是一个数字。我知道我可能可以抑制错误,但我想知道如何更好地注释这些东西。

谢谢您的帮助!

4

2 回答 2

8

您可以按如下方式覆盖它:

var w = /** @type {number} */ ($(window).width());
$('#whatever').width(w)
于 2010-10-28T02:52:23.403 回答
2

试试这个:

var w =  $(window).width();
w = parseInt(w.toString());
$('#whatever').width(w);

或这个:

var w =  $(window).width() + '';
$('#whatever').width(w);
于 2010-10-28T01:02:32.997 回答