Предположим, у меня есть какое-то свойство в моем магазине, представляющее собой массив некоторого типа MyType
и , украшенный наблюдаемым:
class MyStore {
@observable array
}
Я знаю, что в нормальном мире это должно бытьArray<MyType>
.Но когда я объявляю это таким образом,
class MyStore {
@observable array: Array<MyType>
}
, тогда я теряю метод .remove(item: MyType)
.С другой стороны, если я объявляю это с помощью IObservableArray<MyType>
,
class MyStore {
@observable array: IObservableArray<MyType>
}
, тогда я теряю возможность юридически присвоить значения Array<MyType>
этой пропе (под юридически Я имею в виду присвоение без построения ... as IObservableArray<MyType>
- недостатки этого метода слишком очевидны: много ненужного кода, тип должен импортироваться всякий раз, когда он используется, и т. Д.)
Я также пытался использовать типы объединения и пересечения:
- Пересечение (
Array<MyType> & IObservableArray<MyType>
) выдает ошибку при назначении значения Array<MyType>
этому реквизиту: Property 'spliceWithArray' is missing in type MyType
. - Объединение (
Array<MyType> | IObservableArray<MyType>
) по-прежнему приводит к потереМетод .remove(item: MyType)
.
Я что-то упускаю или неправильно понимаю?Есть ли законный способ победить его?Заранее всем спасибо!
Кстати, версия mobx
, которую я использую, - 4
, потому что мне необходимо поддерживать старые iPad, к сожалению,