Typescript Строгий ноль Проверки объектов с дополнительными ключами - PullRequest
0 голосов
/ 30 мая 2019

Я представляю опцию компилятора 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 .

...