Я пытаюсь использовать параметр --strict
на tsc
, но я столкнулся с следующим "странным" случаем, который, кажется, не понимаю.
Если я пишу:
function testStrict(input: {query?: {[prop: string]: string}}) {
if (input.query) {
Object.keys(input.query).forEach(key => {
input.query[key];
})
}
return input;
}
компилятор жалуется:
test.ts(5,9): ошибка TS2532: объект возможно "undefined".
(строка нарушения input.query[key];
)
То, что я не понимаю, я уже проверил для undefined с защитой if в первой строке функции if (input.query)
, поэтому почему компилятор считает, что это может быть undefined
Я исправил это, добавив еще один одинаковый защитник перед доступом к объекту, например:
function testStrict(input: {query?: {[prop: string]: string}}) {
if (input.query) {
Object.keys(input.query).forEach(key => {
if (input.query) {
input.query[key];
}
})
}
return input;
}
но я не понимаю, зачем нужна другая идентичная строка.