Google闭包编译器w / ternaries:ERROR - 返回类型不一致

时间:2011-07-07 19:53:13

标签: javascript google-closure-compiler ternary

所以我有一个帮助程序命名空间,我在开发JS时存储了有用的附加功能。现在我计划更好地记录它们,并使用JsDoc和Google Closure编译器的帮助来加强我的JS。我今天下午2点获得了最新版本。但是,在以下代码上运行编译器时出现错误:

var my.company.tool = {
    "isNumber": function( p_value )
    {
            return ( typeof(p_value) == "number" ) ? true : false;
    },
    /**
    * @static
    * @returns {Boolean} Indicative of an object.
    */
    "isObject": function( p_value )
    {
            return ( typeof(p_value) == "object" ) ? true : false;
    }
}

因此,在两个返回行上,我得到编译器错误“ERROR - 不一致的返回类型”

如何将这样的三元运算符与Google闭包编译器一起使用?是的,我用谷歌搜索,但我只是不断得到不相关的搜索结果。现在我将删除三元组,但它更愿意使用它们而不会出错:

所以我按照“Tomasz Nurkiewicz”的建议更新了我的陈述,但我仍然得到错误: 改为代码:

var my.company.tool = {
    "isNumber": function( p_value )
    {
            return typeof(p_value) == "number";
    },
    /**
    * @static
    * @returns {Boolean} Indicative of an object.
    */
    "isObject": function( p_value )
    {
            return typeof(p_value) == "object";
    }
}

编译器输出:

[pakeException]
    js/core/IHR.js:68: ERROR - inconsistent return type
    found   : boolean
    required: (Boolean|null)
            return typeof( p_value ) == "number";
                                     ^

    js/core/IHR.js:76: ERROR - inconsistent return type
    found   : boolean
    required: (Boolean|null)
            return ( typeof( p_value ) == "object" );
                                       ^

    2 error(s), 0 warning(s), 99.0% typed

即使我尝试将类型设置为{Boolean | null},我仍然会收到错误。是什么给了什么?

2 个答案:

答案 0 :(得分:4)

您应该将返回类型声明为{boolean}而不是{Boolean},因为{boolean}指的是原始布尔类型,而{Boolean}指的是包装器{Boolean}类型

答案 1 :(得分:2)

这会有帮助吗?此外,您拥有更清晰,更易读的代码......

var my.company.tool = {
    "isNumber": function( p_value )
    {
            return typeof(p_value) == "number";
    },
    "isObject": function( p_value )
    {
            return typeof(p_value) == "object";
    }
}