Riotjs (Riot typcript) не может переписать метод в классе машинописи

Это странно Что я делаю неправильно?

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 У iself есть своя (оригинальная) копия trigger()

Пожалуйста, смотрите https://jsfiddle.net/sidouglas/5spbvpnn/

Я сослался на это очень простым примером, и я не знаю, что происходит.

1 ответ

Решение

Основываясь на источнике, наблюдаемые бунт не используют преимущества прототипного наследования. Вместо этого они работают как миксины. Класс-оболочка машинописи просто вызывает оригинальный миксин. Чтобы перезаписать функцию, вы должны назначить ее экземпляру:

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

let store = new Store();
store.trigger();
Другие вопросы по тегам