对于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处理。
发布于 2018-11-08 21:39:29
原因是我们的tsconfig设置-我们有一个根配置和几个子配置,这似乎是编译器选项之间的相互作用,在某种程度上破坏了输出。
有关该问题的详细信息,见“MobX GitHub problem 这里”中的文档。我们的解决方法是只对整个项目使用一个统一的tsconfig。
发布于 2018-10-28 03:06:56
从public函数声明中删除selfDestruct是否修复了它?我从未在我的操作中使用过public,所以我不确定这将如何影响@action装饰器的使用。
https://stackoverflow.com/questions/53011943
复制相似问题