тип :

аюсь использовать--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;
}

но я не понимаю, почему потребуется другая идентичная строка.

Ответы на вопрос(1)

Ваш ответ на вопрос