3

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

4

2 に答える 2