Javascript 安全访问可选流类型的属性
我想安全地访问由外部库(mobx)设置的联合类型(所有选项都是接口)上的属性Javascript 安全访问可选流类型的属性,javascript,flowtype,Javascript,Flowtype,我想安全地访问由外部库(mobx)设置的联合类型(所有选项都是接口)上的属性 无法调用observe,因为: 添加的任一属性在IArrayChange[1]中缺失,但在第一个参数的IArraySplice[2]中存在。 IOObjectChange[3]中缺少或添加的属性,但在第一个参数的IArraySplice[2]中存在。 142│ 遵守(此容器.项目)(更改:IARRAY) 但我不确定使用外部库的接口来实现这一点的最佳方法。编写函数(如)感觉比我想要的更重,以满足预提交类型检查器的
无法调用observe,因为:
添加的任一属性在IArrayChange[1]中缺失,但在第一个参数的IArraySplice[2]中存在。
IOObjectChange[3]中缺少或添加的属性,但在第一个参数的IArraySplice[2]中存在。
142│ 遵守(此容器.项目)(更改:IARRAY)
但我不确定使用外部库的接口来实现这一点的最佳方法。编写函数(如)感觉比我想要的更重,以满足预提交类型检查器的规则
如何做到这一点?工作解决方案:
observe(thisContainer.items, (change: IArraySplice<any> | IArraySplice<T>) => {
if (change.type === 'splice') {
change.added.forEach((item: Item) => this.observeChanges(item));
}
});
observe(thisContainer.items, (change: IArraySplice<any> | IArraySplice<T>) => {
if (change.type === 'splice') {
change.added.forEach((item: Item) => this.observeChanges(item));
}
});
export interface IArrayChange<T> {
type: "update",
object: IObservableArray<T>,
index: number,
newValue: T,
oldValue: T
}
export interface IArraySplice<T> {
type: "splice",
object: IObservableArray<T>,
index: number,
added: T[],
addedCount: number,
removed: T[],
removedCount: number
}