いくつかの関数を 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 クラスを拡張するにはどうすればよいですか?と同等のオブジェクトを取得します。