MobX:动作注解方法未定义

MobX: Action-annotated method is undefined

我在使用 MobX 注释时遇到一个奇怪的问题,结果对象上不存在注释为 @action 的方法。

如果我的 class 来源是以下 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() returns undefined

但是,如果我使用操作函数,一切似乎都很好:

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

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

const car = new Car();

car.selfDestruct(); // works fine

作为参考,我正在使用带有 TypeScript 3.1.1 的 MobX 5.5.2。编译由 ParcelJS 1.10.1

处理

selfDestruct 函数声明中删除 public 是否可以修复它?我从未在我的操作中使用过 public,所以我不确定这将如何影响 @action 装饰器的使用。

原因原来是我们的 tsconfig 设置 - 我们有一个根配置和几个子配置,它们之间编译器选项的相互作用似乎以某种方式破坏了输出。

问题的完整详细信息记录在 MobX GitHub 问题 here 中。我们的解决方法是对整个项目仅使用一个统一的 tsconfig。