У меня есть интерфейс для книги с необязательным идентификатором (для новой книги, которая еще не сохранена на сервере):
interface Book {
id?: string
}
Когда я получаю все книги из бэкэнда - я использую для создать объект byId:
allIds: payload.map(book => book.id!),
, где allIds
объявление:
allIds: string[]
, как вы можете видеть, я добавил !
после book.id
, чтобы указать У каждой книги есть идентификатор. как будто я не буду этого делать, Typescript не будет компилироваться с:
TS2322: Тип '(string | undefined) []' нельзя назначить типу 'string []'.
Тип 'строка | undefined 'нельзя назначить типу' string '.
Тип' undefined 'нельзя назначить типу' string '.
Теперь, он работает с !
, и Я не ожидаю, что в какой-либо книге пропущен ее идентификатор, но я хотел бы найти элегантный способ проверить его ... на всякий случай.
Я могу сделать что-то вроде:
allIds: payload.map(book => {
if (!book.id) {
throw new Error("invalid book id")
}
return book.id
}),
но я хотел бы знать, есть ли у вас идея более элегантного однострочного элегантного решения для проверки элементов при его сопоставлении.