我有一个这样的课程:
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();
这样的事情。任何指针都会受到赞赏。
答案 0 :(得分:0)
来自Array<ITenant>
的课程的继承不会以任何方式影响您之前的定义。如果您希望方法在IManor
课程中可用,则必须将tenants
成员定义为Tenants
。在这种情况下,你不能使用数组语法来构造这个实体,而是使用new Tenants()
,但所有其他数组方法(如filter
,map
等)都可用,以及你的方法totalAcres
。
因此IManor
定义将如下所示:
export class IManor {
tenants: Tenants = new Tenants();