Я привязываю некоторый массив к моему компоненту вот так
<my-component :filters = "columnFilters"></my-component>
с участием
columnFilter: ["name", "surname", "hours"]
В MyComponent.vue я помещаю фильтры как свойство типа Array с функцией по умолчанию.
Теперь, когда я хочу перебрать элементы в фильтры с помощью простого forloop в вычисленное свойство:
for(var name of this.filter)
{
console.info(name);
}
TypeScript не позволяет мне, потому что он видит this.filter как любой
Редактировать
Проблема в том, что все мои реквизиты в Vue.js рассматриваются как тип любой, даже если они определены так:
filter: {
type: Array,
default: function() {
return [];
}
}
Таким образом, компилятор машинописного текста не компилируется, потому что он не видит, что фильтр относится к типу Array. Есть ли способ дать ему понять это?
для работ для типа массива я использовал тип VueJS с внутренним типом массива, но на самом деле это коллекция наблюдателя, и все, что я не могу найти ни одной документации об этой коллекции
Вам не нужно беспокоиться о том, что это наблюдается - Vue обертывает данные, чтобы сделать их реактивными.
Если я это сделаю: для (имя переменной this.filters) у меня есть исключение Введите '(() => любой) | ComputedOptions <any> 'не является типом массива или строковым типом.
Возможно, мне нужно изменить параметр компилятора
Я не уверен, что смогу вам помочь; Я не знаю, что вы определили для этих типов, но похоже, что вы передаете массив строк, и for..of должен выполнить итерацию в порядке.
При включении es6: Тип должен иметь метод '[Symbol.iterator] ()', который возвращает итератор.
Если вы обращаетесь к опоре через строку вроде этой: this.filter["bla"], машинописный текст не может определить тип, и вы получите ошибку no index signature. Вы можете исправить это в вашем файле .d.ts, используя keyof.
Не могли бы вы быть более явным или дать мне ссылку, я новичок в машинописном тексте, я думаю, что основная проблема в том, что машинописный текст не может видеть тип this.filter



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Найдите способ определить тип моей опоры, просто создав новую переменную с правильным типом и приведением внутри функции, в которой я использую опору:
let filters: string[] = this.filters as string[];
Решите проблему, но все равно немного некрасиво
for inв javascript над массивом дает вам индекс элементов массива. Используйтеfor of(новый синтаксис ES6) или обычный цикл for.