Рабочий раствор:
observe(thisContainer.items, (change: IArraySplice<any> | IArraySplice<T>) => {
if (change.type === 'splice') {
change.added.forEach((item: Item) => this.observeChanges(item));
}
});
Пояснение:
Хотя сообщение об ошибке фокусируется на существовании свойства, ошибка вызывается b / c, передаваемый аргумент не обязательно соответствует ожидаемому.
Поскольку изменения в mobx IObservableArray
могут генерировать либо IArraySplice<T>
, либо IArraySplice<T>
, типы потока должны быть учтены либо.
Как только это будет обработано, свойства, доступные для обоих ожидаемых, станут доступными для уточнения.
Для справки, реализации MOBX типов:
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
}