如何将Mobx createObservableArray与TypeScript一起使用?
尝试1:如何将Mobx createObservableArray与TypeScript一起使用?,typescript,mobx,Typescript,Mobx,尝试1: import { observable } from "mobx"; import { createObservableArray, IObservableArray } from "mobx/lib/internal"; export class Example1 { @observable items : IObservableArray<string>; constructor() { this.items = []; } }
import { observable } from "mobx";
import { createObservableArray, IObservableArray } from "mobx/lib/internal";
export class Example1 {
@observable items : IObservableArray<string>;
constructor() {
this.items = [];
}
}
要允许此操作,项必须具有IOvservableArray类型。否则我将得到以下错误:
类型“string[]”上不存在属性“replace”
当然,我总能做到这一点:
(this.items as IObservableArray<string>).replace(items);
但这也不是最漂亮的代码。IObservableArray已经导出,所以我想应该有一种正确的方法来使用它并确保类型安全。但是怎么做呢?我在声明可观察数组时经常使用这种模式: 只读项=可观察[];
这能满足你的需要吗?可观察的东西从哪里来?如果我从mobx使用import{observable};然后observable[]结果“observable”指的是一个值,但在这里被用作一个类型。哦,我明白了。类型必须是IObservableArray,但对于构造,我需要使用observearray。是的,这就是诀窍。有时我认为它不是世界上最明显的API,但它确实有效。为什么必须是只读的??如果我们使用decorator而不是observable[],解决方法是什么?
this.items.replace(newItems);
(this.items as IObservableArray<string>).replace(items);
(this.items as any).replace(items);