тип :
аюсь использовать--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: Возможно, объект не определен.
(оскорбительная строкаinput.query[key];
)
Что я не понимаю, так это то, что я уже проверил наличие неопределенности с помощью if guard в первой строке функцииif (input.query)
, такпочему компилятор считает, что он может быть неопределенным?
Я исправил это, добавив еще один идентичный охранник перед доступом к объекту, например:
function testStrict(input: {query?: {[prop: string]: string}}) {
if (input.query) {
Object.keys(input.query).forEach(key => {
if (input.query) {
input.query[key];
}
})
}
return input;
}
но я не понимаю, почему потребуется другая идентичная строка.