首页 > 解决方案 > typedef [Symbol.iterator] 的正确方法是什么?

问题描述

我有以下代码在 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 && i < end; i++) {
                yield meetings[i];
            }
        }
    };
  }

它有效,但 linter 抱怨以下消息:

预期的调用签名:'[Symbol.iterator]' 有一个 typedef (typedef)

会议是一系列会议界面。

我该怎么做才能让 linter 开心?

更新:

我最终得到以下结果,现在 linter 没有抱怨:

  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 && i < end; i++) {
                yield meetings[i];
            }
        }
    };
  }

有没有办法简化这个?

标签: angulartypescript

解决方案


你的 linter 期望你的*[Symbol.iterator]()

将是 typedef,与

interface Generator<T,TReturn,TNext> extends Iterator

像:

*[Symbol.iterator](): Generator<Meeting, void> {


推荐阅读