Ich spiele um mit Typoskript, und ich habe ein paar functional mixins bekam, Eventable
und Settable
, dass ich zu einer Model
Klasse mixin möge (so tun, es ist so etwas wie ein Backbone.js Modell):Mixins in Typoskript
function asSettable() {
this.get = function(key: string) {
return this[key];
};
this.set = function(key: string, value) {
this[key] = value;
return this;
};
}
function asEventable() {
this.on = function(name: string, callback) {
this._events = this._events || {};
this._events[name] = callback;
};
this.trigger = function(name: string) {
this._events[name].call(this);
}
}
class Model {
constructor (properties = {}) {
};
}
asSettable.call(Model.prototype);
asEventable.call(Model.prototype);
der obige Code funktioniert gut, aber würde nicht kompilieren, wenn ich wie (new Model()).set('foo', 'bar')
eine des Mixed-in Verfahren zu verwenden versucht.
Ich kann dieses Problem umgehen, indem
- Hinzufügen
interface
Erklärungen für die Mixins - erklärt Dummy
get
/set
/on
/trigger
Methoden in derModel
Erklärung
Gibt es eine saubere Art und Weise um die Dummy-Deklarationen?
möglicherweise eine Lösung im Zusammenhang zu lösen dieses auf [Microsoft/Typoskript # 2919] (https://github.com/Microsoft/TypeScript/issues/2919#issuecomment-173384825) – mucaho