我已经搜索了谷歌的最后一页,并且没有找到答案。
如何在另一个对象范围内注释一个函数,该函数可以作为字符串,字符串数组或根本没有参数作为参数?
我试过了:
/**
* @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) {
答案 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));
如果有人知道如何让它变得不那么令人毛骨悚然,请在此处发布。