Структура данных TypeScript VueJS

Я привязываю некоторый массив к моему компоненту вот так

<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. Есть ли способ дать ему понять это?

for in в javascript над массивом дает вам индекс элементов массива. Используйте for of (новый синтаксис ES6) или обычный цикл for.
Bert 14.03.2018 14:18

для работ для типа массива я использовал тип VueJS с внутренним типом массива, но на самом деле это коллекция наблюдателя, и все, что я не могу найти ни одной документации об этой коллекции

Quentin 14.03.2018 14:38

Вам не нужно беспокоиться о том, что это наблюдается - Vue обертывает данные, чтобы сделать их реактивными.

Bert 14.03.2018 14:40

Если я это сделаю: для (имя переменной this.filters) у меня есть исключение Введите '(() => любой) | ComputedOptions <any> 'не является типом массива или строковым типом.

Quentin 14.03.2018 14:44

Возможно, мне нужно изменить параметр компилятора

Quentin 14.03.2018 14:45

Я не уверен, что смогу вам помочь; Я не знаю, что вы определили для этих типов, но похоже, что вы передаете массив строк, и for..of должен выполнить итерацию в порядке.

Bert 14.03.2018 14:47

При включении es6: Тип должен иметь метод '[Symbol.iterator] ()', который возвращает итератор.

Quentin 14.03.2018 14:47

Если вы обращаетесь к опоре через строку вроде этой: this.filter["bla"], машинописный текст не может определить тип, и вы получите ошибку no index signature. Вы можете исправить это в вашем файле .d.ts, используя keyof.

Kokodoko 14.03.2018 15:11

Не могли бы вы быть более явным или дать мне ссылку, я новичок в машинописном тексте, я думаю, что основная проблема в том, что машинописный текст не может видеть тип this.filter

Quentin 14.03.2018 15:12
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
9
245
1

Ответы 1

Найдите способ определить тип моей опоры, просто создав новую переменную с правильным типом и приведением внутри функции, в которой я использую опору:

let filters: string[] = this.filters as string[];

Решите проблему, но все равно немного некрасиво

Другие вопросы по теме