Я представляю опцию компилятора strictNullchecks
в нашем проекте Angular и столкнулся с этой проблемой.
ошибка TS2345: Аргумент типа 'строка | undefined 'не может быть назначен параметру типа' string '.
replaceTokens(menuItemList: MenuItem[]): MenuItem[] {
for (let i = 0; i < menuItemList.length; i++) {
if (menuItemList[i].route) {
menuItemList[i].route = this.tokenizer.replace(
menuItemList[i].route <-- Error here
// menuItemList[i].route as string <-- No error here
);
}
}
return menuItemList;
}
В приведенном выше коде я проверяю, что menuItemList[i].route
определено перед его использованием, однако я все еще получаю описанную выше ошибку.
Если бы я привел его к string
, то это решило бы проблему, но я думаю, что это плохая работа, так как я уже подтвердил, что это не может быть undefined
в операторе if, так это должен быть типом string
.
Я полагаю, что проблема может быть связана с тем, что MenuItem.route?
является необязательным, но я не могу понять, почему это проблема, поскольку я ранее упоминал, что это не может быть undefined
из-за проверки if
.