#angular #typescript
#angular #машинопись
Вопрос:
У меня есть следующий код для разбивки на страницы в Angular:
get meetingsPage() {
const start = this.pagination.pageSize * ( this.pagination.currentPage - 1)
const end = this.pagination.pageSize * this.pagination.currentPage;
const meetings = this.meetings;
return {
*[Symbol.iterator]() {
for (let i = start; i < meetings.length amp;amp; i < end; i ) {
yield meetings[i];
}
}
};
}
Это работает, но линтер жалуется на следующее сообщение:
ожидаемая подпись вызова: ‘[Symbol.iterator]’, чтобы иметь typedef (typedef)
собрания — это массив интерфейса собрания.
Что я могу сделать, чтобы сделать линтер счастливым?
Обновить:
В итоге я получаю следующее, и теперь линтер не жалуется:
get meetingsPage(): Iterable<Meeting>} {
const start = this.pagination.pageSize * ( this.pagination.currentPage - 1)
const end = this.pagination.pageSize * this.pagination.currentPage;
const meetings = this.meetings;
return {
*[Symbol.iterator](): Generator<Meeting, void> {
for (let i = start; i < meetings.length amp;amp; i < end; i ) {
yield meetings[i];
}
}
};
}
Есть ли способ упростить это?
Комментарии:
1. Как правило, в большинстве случаев typescript достаточно умен, чтобы самостоятельно определять тип, и это правило не очень полезно
Ответ №1:
Ваш линтер ожидает, что ваш *[Symbol.iterator]()
будет typedef, с
interface Generator<T,TReturn,TNext> extends Iterator
Нравится:
*[Symbol.iterator](): Generator<Meeting, void> {
Комментарии:
1. Или более конкретно
Generator<Meeting, void>