Typescript Строгий ноль Проверки объектов с дополнительными ключами
Я представляю 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
в заявлении, так что это должно быть string
тип.
Я считаю, что проблема может быть связана с тем, что MenuItem.route?
не является обязательным, но не могу понять, почему это проблема, как я уже говорил, это не может быть undefined
из-за if
проверять.