MobX: аннотированный метод не определен - PullRequest
0 голосов
/ 26 октября 2018

У меня странная проблема с аннотациями MobX, когда аннотированный метод @action не существует в результирующем объекте.

Если источником моего класса является следующий TypeScript (как минимальный пример):

export class Car {
    @observable
    public wheels: number = 4;

    @action
    public selfDestruct() {
        this.wheels = 0;
    }
}

И я вызываю метод следующим образом:

const car = new Car();
car.selfDestruct();

Я получаю ошибку:

Uncaught TypeError: car.selfDestruct is not a function

Оценка car.selfDestruct() в консоли возвращает undefined.

Однако , если я использую действие , функция , все выглядит нормально:

export class Car {
    @observable
    public wheels: number = 4;

    public selfDestruct = action(
        () => this.wheels = 0
    );
}

const car = new Car();

car.selfDestruct(); // works fine

Для справки, я использую MobX 5.5.2 с TypeScript 3.1.1. Компиляция обрабатывается ParcelJS 1.10.1

Ответы [ 2 ]

0 голосов
/ 09 ноября 2018

Причина оказалась в нашей настройке tsconfig - у нас был корневой конфиг и несколько дочерних конфигов, и казалось, что взаимодействие параметров компилятора между ними каким-то образом исказило вывод.

Полная информация о проблеме описана в выпуске MobX GitHub здесь . Нашим решением было просто использовать один унифицированный tsconfig для всего нашего проекта.

0 голосов
/ 28 октября 2018

Исправляет ли удаление public из объявления функции selfDestruct?Я никогда не использовал public в своих действиях, поэтому я не уверен, как это повлияет на использование @action декоратора.

...