【发布时间】:2019-06-28 14:17:28
【问题描述】:
我想向 Array 类添加一些函数(我不希望将它们作为类外部的函数,因为理想情况下,在对象后面键入 . 时可以发现它们)。这是我目前所拥有的:
export class List<T> extends Array<T> {
constructor(items?: Array<T>) {
super(...items)
Object.setPrototypeOf(this, List.prototype);
}
get first(): T {
return this[0]
}
}
运行良好:
const list = new List([1,2,3]);
console.log(list.first)
但如果我尝试运行它:
const list = new List([1,2,3]);
console.log(list.map(x=>x*2))
我收到以下错误:
super(...items)
^
TypeError: Found non-callable @@iterator
理想情况下,我会得到一个等同于new List(this.map(x=>x*2)) 的对象。如何在不必重写 Array 的所有方法的情况下扩展 Array 类?
【问题讨论】:
标签: typescript class-extensions