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];
}
}
なぜこれが必要なのかについて詳しく読むここ。