по определенному полю, либо дефолтный объект, пробую делать это так:
const publicResponse: NewTicketResponse = this.newTicket.ticketResponse.find(res => res.type === 'Public')
? this.newTicket.ticketResponse.find(res => res.type === 'Public')
: {text: '', type: 'Public'}
или даже пробовал так
let publicResponse: NewTicketResponse
if (this.newTicket.ticketResponse.find(res => res.type === 'Public')) {
publicResponse = this.newTicket.ticketResponse.find<NewTicketResponse>(res => res.type === 'Public')
} else {
publicResponse = {text: '', type: 'Public'}
}
Метод массива find возвращает либо найденную сущность, либо undefined, даже когда я делаю проверку условием, что сущность найдена, то компилятор все равно считает, что там может быть undefined - почему так и как правильно?
TypeScript не знает, что метод find каждый раз возвращает один и тот же результат. Сделай так: let publicResponse = this.newTicket.ticketResponse.find(res => res.type === 'Public'); if (publicResponse) { publicResponse = {text: '', type: 'Public'} }
Обсуждают сегодня