ネイティブJavaScript配列を拡張する 質問する

ネイティブJavaScript配列を拡張する 質問する

JS ネイティブ関数からクラスを継承する方法はありますか?

たとえば、次のような JS 関数があります。

function Xarray()
{
    Array.apply(this, arguments);
    //some stuff for insert, add and remove notification
}
Xarray.prototype = new Array();

Typescript に変換しようとしましたが失敗しました!!

export class Xarray implements Array {
}

コンパイラは、すべてのArrayインターフェース プロパティを定義するように要求します。これが必要な場合は、 TS でXarray.prototype = new Array();拡張する必要があることはわかっています。Array

TS で JS ネイティブ オブジェクトを拡張するにはどうすればよいですか?

ベストアンサー1

TypeScript 1.6以降では、Array型を拡張することができます。TypeScriptの新機能

次に例を示します。

class MyNewArray<T> extends Array<T> {
    getFirst() {
        return this[0];
    }
}

var myArray = new MyNewArray<string>();
myArray.push("First Element");
console.log(myArray.getFirst()); // "First Element"

ES5 以下に出力する場合は、次のコードを使用します。

class MyNewArray<T> extends Array<T> {
    constructor(...items: T[]) {
        super(...items);
        Object.setPrototypeOf(this, MyNewArray.prototype);
    }

    getFirst() {
        return this[0];
    }
}

なぜこれが必要なのかについて詳しく読むここ

おすすめ記事