свойство typescript ‘type’ не существует для типа ‘never’

#typescript

#typescript

Вопрос:

У меня ошибка typescript typescript Property 'type' does not exist on type 'never' в коде

 export const getSomething = (actionLog: [] | undefined) => {
  console.info(actionLog[length - 1].type)
}
  

В чем проблема?

Комментарии:

1. [] означает «Кортеж нулевой длины», который по определению не имеет элементов и, следовательно, при индексации выдает тип never

Ответ №1:

Решение состоит в том, чтобы определить тип для свойства ‘type’:

 export const getSomething = (actionLog: {type: string}[] | undefined) => {
  console.info(actionLog[length - 1].type)
}
  

ОБНОВЛЕНО:

 export const getSomething = (actionLog: {type: string}[]) => {
  if (actionLog amp;amp; actionLog[0]) {
    console.info(actionLog[length - 1].type)
  }
}
  

Комментарии:

1. Этот код все равно не будет компилироваться, по крайней мере, при более строгих настройках, потому что actionLog может быть неопределенным.

2. Оно компилируется, если у вас не --strictNullChecks включено, но да, это все еще не очень хорошо.

3. Оно будет скомпилировано, если вы либо а) обернете console.info в if (actionLog) , чтобы проверить, actionLog определено ли, или б) используете ! для утверждения, что actionLog определено ( actionLog![length - 1] ).