私は追加のメソッドget
で配列に基づいてクラスを作りたいと思います。
最初は私のコードは、そのように見えた:関数をクラスとしてエクスポートするにはどうすればよいですか?
export class CircularArray extends Array<string> {
constructor(data: string[]) {
super();
this.push(...data);
}
get(i: number): string {
return this[i % this.length];
}
}
はtypescriptです2.0.10で、それは完全に働きました。私は実際のバージョン2.2.0への写し(typescript)を更新するdesidedときしかし、私はこのコードhave changedのコンパイルを見つけた:今typescriptですがsuper()
呼び出しから返された値に処理しますので、返されるオブジェクトは、結果
function CircularArray(data) {
var _this = _super.call(this) || this;
_this.push.apply(_this, data);
return _this;
}
ですに電話してください。もちろん、そのプロトタイプはCircularArray.prototype
の代わりにArray.prototype
であり、方法get
は失われています。どうすれば修正できますか?
は、私はそのような何かしようとしました:
export declare class CircularArray extends Array<string> {
constructor(data: string[]);
get(i: number): string;
}
export function CircularArray(data: string[]): CircularArray {
this.push(...data);
return this;
};
CircularArray.prototype = Object.create(Array.prototype);
CircularArray.prototype.get = function (i: number): string {
return this[i % this.length];
};
をが、エラーが発生しました:
error TS2300: Duplicate identifier 'CircularArray'.
error TS2300: Duplicate identifier 'CircularArray'.