Riotjs(Riot打字稿)不能覆盖打字稿类的方法

时间:2016-10-12 00:09:32

标签: javascript typescript riot

这很奇怪。我做错了什么?

class Store extends Riot.Observable {
  trigger():void {
   // shouldn't this be completely overwriting the trigger method on riot.observable? 
   console.log("my trigger....");
  }
}

let store = new Store();
store.trigger();

预期的行为:"我的触发器......"在控制台中。我得到的是Riot.Observable上触发器的原始实现,由于没有传递参数而导致错误。

如果我戳store store.__proto__我可以在store看到的对象确实有触发器,我的实现。但是trigger() iself有自己的(原始)../../../../

副本

请参阅https://jsfiddle.net/sidouglas/5spbvpnn/

我引用this with a very basic example,我不知道发生了什么。

1 个答案:

答案 0 :(得分:2)

基于source,暴乱的观察者不利用原型继承。它们作为mixins而不是。打字稿包装类只调用原始的暴乱混合。要覆盖函数,必须将其分配给实例:

class Store extends Riot.Observable {
    constructor() {
        this.trigger = function() {
            console.log("My trigger");
        };
    }
}

let store = new Store();
store.trigger();