注:これはバックボーンとは何の関係もないため、検索性を高めるために回答後のタイトルを変更しました。
module App.BackBone.Collections {
export class MixedChartCollection extends Backbone.Collection {
public model: App.BackBone.Models.BaseChartModel;
constructor(models?: any, options?: any) {
super(models, options);
}
}
}
ベースの Backbone.Collection コンストラクターが呼び出され、this
コンテキストが私のクラス o_O ではなく私のモジュールになっているようです
backbone.js のコンストラクターは次のとおりです。
var Collection = Backbone.Collection = function (models, options) {
options || (options = {});
if (options.url) this.url = options.url;
if (options.model) this.model = options.model;
if (options.comparator !== void 0) this.comparator = options.comparator;
this._reset(); //ERROR: this._reset is not a function
this.initialize.apply(this, arguments);
if (models) this.reset(models, _.extend({ silent: true }, options));
};
画像でApp.BackBone.Collections
は、同じ 3 つのメンバー (赤色で表示され、そのうちの 1 つは問題のクラス) がthis
コンテキストとしてどのように使用されているかを確認できます。 this._reset は最終的に未定義になります。どこからともなくオブジェクト
なぜこれを行うのですか?
このクラスのコンパイル済みコードは次のとおりです。
var App;
(function (App) {
(function (BackBone) {
(function (Collections) {
var MixedChartCollection = (function (_super) {
__extends(MixedChartCollection, _super);
function MixedChartCollection(models, options) {
_super.call(this, models, options); //HERE "this" is not MixedChartCollection instance
}
return MixedChartCollection;
})(Backbone.Collection);
Collections.MixedChartCollection = MixedChartCollection;
})(BackBone.Collections || (BackBone.Collections = {}));
var Collections = BackBone.Collections;
})(App.BackBone || (App.BackBone = {}));
var BackBone = App.BackBone;
})(App || (App = {}));