Я использую компилятор Google Closure , чтобы минимизировать мой код, и я недавно добавил JSDoc аннотации , чтобы позволить компилятору выполнять проверку типов и улучшать минимизацию (в расширенном режиме).К сожалению, это отображает предупреждение.Есть ли способ изменить код, чтобы предотвратить предупреждение, не добавляя комментарий компилятора замыкания, чтобы подавить его?
JSC_TYPE_MISMATCH: actual parameter 1 of add does not match formal parameter
found : (Date|null)
required: Date at line 30 character 8
add(date, 1, "second");
^
Вот код JS, который я пытаюсь минимизировать
/**
* @param {?Date|*} date
* @returns {!boolean}
* @private
*/
function isValidDateObject(date) {
return (date instanceof Date) && !isNaN(date.getTime());
};
/**
* @param {!Date} date
* @param {!number} num
* @param {!string} unit
*/
function add(date, num, unit) {
if (unit === "second") {
date.setSeconds(date.getSeconds() + num);
}
}
/**
* @param {Date} date
* @return {Date}
*/
function addOneSecond(date) {
if (!isValidDateObject(date)) {
return date;
}
add(date, 1, "second");
return date;
}
Проверка date instanceof Date
должна обрабатывать дату, являющуюся null
, и заставить метод возвращать значение false, и даже не пытаться выполнить все функции add
.Не уверен, почему cc думает, что я мог бы передать null
в функцию add
.В реальном коде isValidDateObject
используется во многих местах, поэтому я не хочу вставлять его.
Вы можете минимизировать мой код, используя онлайн-версию компилятора закрытия иустановка уровня оптимизации на «Advanced».
Примечание. Это упрощенный пример, демонстрирующий полученную ошибку.