Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 安全访问可选流类型的属性_Javascript_Flowtype - Fatal编程技术网

Javascript 安全访问可选流类型的属性

Javascript 安全访问可选流类型的属性,javascript,flowtype,Javascript,Flowtype,我想安全地访问由外部库(mobx)设置的联合类型(所有选项都是接口)上的属性 无法调用observe,因为: 添加的任一属性在IArrayChange[1]中缺失,但在第一个参数的IArraySplice[2]中存在。 IOObjectChange[3]中缺少或添加的属性,但在第一个参数的IArraySplice[2]中存在。 142│ 遵守(此容器.项目)(更改:IARRAY) 但我不确定使用外部库的接口来实现这一点的最佳方法。编写函数(如)感觉比我想要的更重,以满足预提交类型检查器的

我想安全地访问由外部库(mobx)设置的联合类型(所有选项都是接口)上的属性

无法调用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
}