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 проверять.

0 ответов

Другие вопросы по тегам