Я новичок в TypeScript, и после JavaScript он выходит, но иногда с ним трудно работать.
У меня есть метод:
// Part of Vuex store code
state = ...
readOneAsr: (asrId: number): IAsr | undefined => {
const filteredInstances = state.items.filter((asr) => asr.id === asrId)
if (filteredInstances.length > 0) {
return { ...filteredInstances[0] }
}
}
// Method from Vue component
...
get relatedAsr(): IAsr[] {
if (!this.instance) {
return []
}
return this.asr_ids
.map((aid) => readOneAsr(aid))
.filter((asr) => asr !== undefined)
}
Метод readOneAsr
может возвращать undefined
, но в конце метод relatedAsr
возвращает только IAsr
экземпляров.
Поэтому я указал relatedAsr(): IAsr[]
. Но eslint показывает мне ошибку:
83:5 Type '(IAsr | undefined)[]' is not assignable to type 'IAsr[]'.
Type 'IAsr | undefined' is not assignable to type 'IAsr'.
Type 'undefined' is not assignable to type 'IAsr'.
Как исправить эту ошибку? Самый простой способ - просто указать тип возврата для (IAsr | undefined)[]
, но мне это решение не нравится.