【发布时间】:2016-03-28 17:06:51
【问题描述】:
在一个 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>
));
【问题讨论】: