【问题标题】:Is there a way to have closure compiler warn about passed variables (strong type) AND use jquery?有没有办法让闭包编译器警告传递的变量(强类型)并使用 jquery?
【发布时间】:2013-02-26 13:48:19
【问题描述】:

我有一个简单的例子:

var obj = {
  /**
  * @param {number} inp 
  * @returns {number} returning number plus one
  */
  func: function(inp) {
    return inp++;
  },
  c: 'hello',
  q: null
};

obj.func($(document)); // passing invalid parameter

我希望看到有关传递参数不是数字的警告,但获得该参数的唯一方法是至少设置为详细。

如果我使用它会起作用:

obj.func(" "); // passing invalid parameter

并省略 --externs jquery-1.9.1.js 命令参数。一旦我将它与 jquery 结合并将warning_level 设置为详细(我想查看有关无效转换/参数/...的警告),我就会被 jquery 文件中的 5500 条警告淹没。

问题是我不关心 jquery 警告,但必须将其包含在 --externs 中,否则我只会收到一个错误:

variable $ is undeclared

现在我想知道;人们如何使用它?我想强烈键入我的 javascript,但使用外部库时,我要么没有收到任何警告,要么收到有关缺少 3rd 方库的警告或警告。

已经研究了几个小时,真的希望有比谷歌提供的更好的文档,因为到目前为止还没有太多用处。

【问题讨论】:

    标签: javascript google-closure-compiler strong-typing


    【解决方案1】:

    在大多数情况下,库的原始源代码并不能构成一个好的外部文件。在 jQuery 的情况下,您需要使用在 Closure-compiler project contrib folder 中找到的官方外部文件。

    目前还没有 jQuery 1.9 extern 文件,但我会尽快发布一个。除非您使用的是 1.9 中引入的 api 签名,否则 1.8 extern file 就足够了。

    【讨论】:

    • 谢谢你,真的很管用。希望有一个选项可以忽略外部文件中的警告,但找不到任何警告。
    • 刚刚注意到设置 --jscomp_off externsValidation 也无济于事,因为整个事情都因 jquery 中的 2 个错误而失败。猜猜我需要特殊的外部文件。再次感谢您的帮助。
    • 您不应该从官方外部文件中收到警告。如果有,那将是一个错误。
    • 不,很抱歉造成误解。缩小版出现错误。我现在看到闭包需要一些严格格式的脚本或无法编译,因此需要外部文件,您不能只包含任何文件并关闭警告或错误。
    猜你喜欢
    • 2020-10-27
    • 1970-01-01
    • 2014-09-25
    • 2010-10-06
    • 2019-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多