Расширение массива вызывает ошибку вывода потока — массив не распознается как интерфейс

#flowtype

#тип потока

Вопрос:

Я пытаюсь расширить интерфейс массива, но сталкиваюсь со следующей ошибкой вывода потока: «Невозможно реализовать ‘Array’, потому что это не интерфейс»

Вот действительно простой пример, который вызывает ошибку:

 export interface MyIArray<T> extends Array<T> {
}

function foo() {
    const list: MyIArray<any> = [];
}
 

В этом примере поток нарушен объявлением const list .

Попробуйте.

Комментарии:

1. Массив — это класс , а не интерфейс

2. Значит , тип mobx для IObservableArray является ошибкой?

Ответ №1:

Извините, это должен быть комментарий, но ссылка Try Flow слишком длинная:

Это похоже на тип mobx для IObservableArray ошибки. Я скопировал соответствующие типы из того файла, который вы связали, и попытался объявить переменную массива как IObservableArray и поток жалуется (попробуйте поток). Я не уверен, существует ли действительный способ ввода и расширения Array напрямую. Если вы можете, его будет проще вводить MyIArray , если вы составите его с Array помощью —установка свойства для MyIArray экземпляров, которые являются ванильным массивом, а затем добавление дополнительных свойств / методов к MyIArray .