在一个 React 项目中,我正在使用 MobX 库。它允许你做的一件事是编写你的代码,就像你正在使用原语一样,但在幕后 MobX 正在做一些可观察到的魔法。我也在这个项目中使用 Flow,并且很难找出正确的语法来应用于 MobX 可观察数组,这些数组至少有两个额外的方法,replace 和 peek。
这段代码的 TS 文件非常深入,我对打字还很陌生。TS 文件可以在这里找到:
https://github.com/mobxjs/mobx/blob/master/src/types/observablearray.ts
我在 Flow 中尝试过的所有语法都不起作用,它可能都很幼稚/无知。
interface ObservableArray {
join(str: string): string;
replace(arr: Array<any>): ObservableArray;
map(mapFunction: Function): Array<any>;
reduce(reducerFunction: Function, initialValue: any): any;
peek(): Array<any>;
}
type MobxArray = ObservableArray;
或者
interface ObservableArray extends Array {
peek(): Array<any>;
replace(arr: Array<any>): MobxArray<any>;
}
type MobxArray = ObservableArray;
大多数时候我收到这个错误“预期的多态类型而不是类型'MobxArray'。” 当我尝试为组件声明道具时出现此错误:
type MyComponentProps = {
myArray: MobxArray<string>;
};
const MyComponent = observer(({ myArray }: MyComponentProps) => (
<div>{ ... code ... }</div>
));