#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]
).