Создание большого количества новых экземпляров классов, которые требуются текущему коду, является трудоемким и, вероятно, ненужным.
Вот альтернатива, в которой вместо этого используется interface
s (которые вообще не передаются в JavaScript) изначительно упрощенный поиск по индексу.
export interface Book {
title: string;
author: string;
}
и затем в сервисе, небольшое изменение для преобразования вашего возврата в Book[]
:
this.books = data.val() ? (data.val() as Book[]) : [];
Затем вы можете использовать вспомогательную функциюи полностью отказаться от класса.Раньше он использовал сочетание функций со стрелками и операторов возврата в скобках, и помощник isEqual не был необходим, поскольку все это можно сократить до:
indexOfBook = (needle: Book) => this.books.findIndex(
book => book.author == needle.author && book.title == needle.title
);