Подтвердить что ты не робот

Angular2: среди возвращаемых выражений нет лучшего общего типа

Попытка скомпилировать мой typescript с помощью gulp, но я получу следующую ошибку:

No best common type exists among return expressions.

Если код представляет собой цикл for, который выглядит следующим образом:

   getIndexInCompareList(result) {
    for (var i = 0; i < this.compare.length; i++) {
        if (this.compare[i].resource.id == result.resource.id) {
            return i;
        }
    }

    return false;
}
4b9b3361

Ответ 1

Как упоминалось в @günter-zöchbauer, ваша функция возвращает два разных типа. Если вы действительно хотите вернуть число в одном случае, а в противном случае - логическое, вы можете использовать any в качестве возвращаемого значения для функции для исправления этой проблемы.

Однако, поскольку многие другие функции, такие как indexOf, возвращают числа, даже если значение не было найдено, я предлагаю вам сделать то же самое. В вашем случае вы также можете вернуть -1, если элемент не найден. Таким образом, вы можете быть явным о своих типах, а также предоставлять четкий интерфейс для других.

function getIndexInCompareList(result): number {
    for (let i = 0; i < this.compare.length; i++) {
        if (this.compare[i].resource.id == result.resource.id) {
            return i;
        }
    }

    return -1;
}

Ответ 2

return i; возвращает number, return false returns a boolean`

Возможно, вам понадобится применить явный тип возвращаемого значения : any в сигнатуре функции. (не уверен, я сам не использую TS)