Riotjs(Riot 打字稿)无法覆盖打字稿上的方法 class

Riotjs (Riot typescript) can't overwrite method on typescript class

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

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();

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

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

的(原始)副本

请看https://jsfiddle.net/sidouglas/5spbvpnn/

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

基于 source,riot observables 不利用原型继承。它们作为 mixin 而工作。 typescript 包装器 class 只是调用原始的 riot mixin。要覆盖函数,您必须将其分配给实例:

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

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