用类似数组但提供类型特定函数的类替换数组?

时间:2018-01-08 18:05:32

标签: arrays typescript

我有一个这样的课程:

export class IManor {
    tenants: ITenant[];

但我也有一些总体查询功能,我也喜欢租户,并希望用课程取而代之。我知道我可以为此参加Array,但希望能够访问聚合函数的内容接口,例如:

class Tenants extends Array<ITenant> {

  totalAcres(): number {
    let total = 0;
    for (const tenant in this) {
      total += tenant.acres;
      }
      return total;
  }
}

但该功能似乎没有意识到它的界面。我的谷歌搜索仅显示通用数组扩展(以及那些问题)。

目标是能够在正常的'manor.tenants租户'的同时做一些像manor.tenants.totalAcres();

这样的事情。

任何指针都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

来自Array<ITenant>的课程的继承不会以任何方式影响您之前的定义。如果您希望方法在IManor课程中可用,则必须将tenants成员定义为Tenants。在这种情况下,你不能使用数组语法来构造这个实体,而是使用new Tenants(),但所有其他数组方法(如filtermap等)都可用,以及你的方法totalAcres。 因此IManor定义将如下所示:

export class IManor {
    tenants: Tenants = new Tenants();
相关问题