Анализ потока управления составляет жесткий . Проблема здесь в том, что компилятор не знает, будет ли или когда или как будет вызываться обратный вызов. Таким образом, сужение toaster.brandName
с (предположительно) string | undefined
до string
больше не действует внутри обратного вызова array.some()
. Если вы хотите помочь компилятору, вы должны присвоить известному определенному значению toaster.brandName
значение const
, которое, как ожидается, компилятор всегда будет оставаться одинаковым, узкий тип:
toasters.forEach((toster: ToasterObject) => {
if (toaster.brandName) {
const toasterBrandName = toaster.brandName; // string, now and forever
if (!itemsArray.some(item => item.brandName.toLowerCase() === toasterBrandName.toLowerCase())) {
//do stuff
}
}
});
Надеюсь, это поможет; удачи!