Компилятор Google замыкания с троицами: ОШИБКА - несовместимый тип возврата - PullRequest
0 голосов
/ 07 июля 2011

Итак, у меня есть пространство имен помощников, которое я храню полезные дополнения при разработке JS. Теперь я планирую лучше их документировать и укрепить свой JS с помощью JsDoc и с помощью компилятора Google Closure. Я получил последние версии на 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;
    }
}

Таким образом, в обеих возвращаемых строках я получаю сообщение об ошибке компилятора «ОШИБКА - несовместимый тип возвращаемого значения»

Как использовать такие троичные операторы с компилятором Google Closure? И да, я гуглил, но я просто продолжаю получать нерелевантные результаты поиска. Сейчас я удалю троичные, но предпочел бы использовать их без ошибок:

Поэтому я обновил свои высказывания в соответствии с предложением «Томаша Нуркевича», но я все еще получаю ошибки: Изменено сделано для кода:

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 ]

4 голосов
/ 08 июля 2011

Вы должны объявить тип возврата как {boolean} вместо {Boolean}, поскольку {boolean} относится к примитивному логическому типу, тогда как {Boolean} относится к типу оболочки {Boolean}.

2 голосов
/ 08 июля 2011

Поможет ли это? Кроме того, у вас есть более чистый и читаемый код ...

var my.company.tool = {
    "isNumber": function( p_value )
    {
            return typeof(p_value) == "number";
    },
    "isObject": function( p_value )
    {
            return typeof(p_value) == "object";
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...