Javascript Google编译器的批注,@type函数带可选参数

Javascript Google编译器的批注,@type函数带可选参数,javascript,google-closure-compiler,Javascript,Google Closure Compiler,我在谷歌搜索到了它的最后一页,但没有找到答案 如何在另一个对象的范围内注释函数,该对象可以将字符串、字符串数组或根本没有参数作为参数 我试过这个: /** * @type function(this:anObject, (string|Array.<string>)=) */ deselect = function(val) { var temp = val ? ( val instanceof Array ? val : [val]) : []; // some

我在谷歌搜索到了它的最后一页,但没有找到答案

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

我试过这个:

/**
 * @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);
/**
*@type函数(这是一个对象,(字符串|数组。)=)
*/
取消选择=功能(val){
var temp=val?(数组的val实例?val:[val]):[];
//一些代码
这是剂量测定法(温度);
}.绑定(对象);
但它不起作用,因为当我在没有参数的情况下调用它时,编译器会返回如下错误:

WARNING - assignment
    found   : function (?): undefined
    required: function (this:anObject, (Array.<string>|null|string)=): ?
        deselect = function(val) {
警告-分配
已找到:函数(?):未定义
必需:函数(此:anObject,(数组.| null |字符串)=):?
取消选择=功能(val){

我倾向于讨厌谷歌闭包编译器使用的类型检查

回答我自己的问题:

要通过绑定返回的赋值检查,必须按如下方式重新编写新函数:

/**
 * @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));
/**
*@type函数(这是一个对象,(字符串|数组。)=)
*/
取消选择=/**@类型函数(此:一个对象,(字符串|数组。)=)*/
(功能(val){
var temp=val?(数组的val实例?val:[val]):[];
//一些代码
这是剂量测定法(温度);
}.绑定(对象));

如果有人知道如何让这件事不再那么令人毛骨悚然,请把它贴在这里。

我多么喜欢无缘无故的否决票。