Ошибка внутри обратного вызова на forEach()
, а не на вызов getObject()
.Обратите внимание, что даже если вы используете функцию со стрелкой, это все же функция.И return
внутри обратного вызова возвращается из функции стрелки, а не из getObject()
.Обратите внимание, что для функций стрелок , x => {return y}
эквивалентно x => y
.Невозможно вернуться из внешней функции из функции стрелки.
Итак, это ваша функция:
object => {
if(object.getID() === id){
return object;
}
}
И компилятор (если вы включили --noImplicitReturns
) замечаетчто эта функция только иногда возвращает значение и поэтому жалуется.
Конечно, forEach()
не волнует возвращаемое значение его обратного вызова, и это все равно не было вашим намерением.Исправление заключается в том, чтобы делать то, что предлагали другие ... использовать find()
вместо forEach()
: ... this.objectCollector.find(o => o.getID()===id) ...
или использовать цикл for
:
for (let object of this.objectCollector) {
if (object.getID() === id) {
return object; // no callback, this returns from the getObject function.
}
}
Надежда, которая помогает;удачи!