angular - 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];
}
}
};
}
有没有办法简化这个?
解决方案
你的 linter 期望你的*[Symbol.iterator]()
将是 typedef,与
interface Generator<T,TReturn,TNext> extends Iterator
像:
*[Symbol.iterator](): Generator<Meeting, void> {
推荐阅读
- maven - Surefire 无法在 Surefire 报告中生成失败测试的完整堆栈跟踪
- .net-core - dotnet-gcdump 意外转储大小和影响
- amazon-web-services - ALB 侦听器 443 使用 8443 端口问题进行规则
- reactjs - React Native 循环动画动画
- logstash - logstash 将 ruby 代码转换为 logstash 过滤器
- python - Plotly-Dash:如何仅更新图形数据而不更改图形布局?
- pandas - 如何将表格数据(Pandas Dataframe)重塑为 RNN 的 3D 数据?
- reactjs - React.js - TypeError:college.map 不是函数
- python - 根据不同的行和列拆分行
- python - 可以在 django 中删除对象的特定行吗?