Google Compiler的注释,带有可选参数的@type函数

时间:2014-04-12 23:44:44

标签: javascript google-closure-compiler

我已经搜索了谷歌的最后一页,并且没有找到答案。

如何在另一个对象范围内注释一个函数,该函数可以作为字符串,字符串数组或根本没有参数作为参数?

我试过了:

/**
 * @type function(this:anObject, (string|Array.<string>)=)
 */
deselect = function(val) {
    var temp = val ? ( val instanceof Array ? val : [val]) : [];
    // some code
    this.doSomething(temp);
}.bind(anObject);

但它不起作用,因为当我在没有参数的情况下调用它时,编译器会发出如下错误:

WARNING - assignment
    found   : function (?): undefined
    required: function (this:anObject, (Array.<string>|null|string)=): ?
        deselect = function(val) {

1 个答案:

答案 0 :(得分:2)

我倾向于讨厌Google Closure Compiler使用的类型检查。

回答我自己的问题:

要从绑定返回传递赋值检查表,您必须重新设置新函数,如下所示:

/**
 * @type function(this:anObject, (string|Array.<string>)=)
 */
deselect = /** @type function(this:anObject, (string|Array.<string>)=) */
(function(val) {
    var temp = val ? ( val instanceof Array ? val : [val]) : [];
    // some code
    this.doSomething(temp);
}.bind(anObject));

如果有人知道如何让它变得不那么令人毛骨悚然,请在此处发布。