Ситуация:
У меня есть проект, для которого я пытаюсь создать миксины, и методы в миксине реагируют на данные из компонента и других методов. Я получаю ошибки на всех моих компонентах от veture, заявляя, что метод не существует в объединенном экземпляре vue. Код работает, и я вижу, что миксины работают, но мне любопытно, что мне делать, чтобы избавиться от ошибок линтинга, которые я вижу в своем проекте. Я вижу жалобы Vetur на код в vscode, однако я также вижу жалобы на ts-lint в консоли.
Вопрос и ожидания
Что вызывает эти ошибки и как их исправить? Он появляется несколько раз для компонентов, которые используют один и тот же код, и я подумал, что миксины будут хорошей идеей для повторно используемого кода, но это становится проблемой.
Детали и код
Код компонента Vue с миксином
export default Vue.extend({
name: 'RecentRequests' as string,
data() {
return {
requests: [] as Request[],
workflows: [] as Workflow[],
environment: `${process.env.VUE_WEB_API}`,
search: '',
}
},
async created() {
await RequestService.getRequest().then((response) => {
this.$data.requests = response.Data;
}).catch((err) => {
this.$data.requests = null;
this.$data.topFive = null;
this.$store.dispatch('updateErrorMessage', {message: `${err}`});
this.$store.dispatch('updateError');
});
await WorkflowService.getWorkflow().then((response) => {
this.$data.workflows = response.Data;
}).catch((err) => {
this.$data.requests = null;
this.$data.topFive = null;
this.$store.dispatch('updateErrorMessage', {message: `${err}`});
this.$store.dispatch('updateError');
});
},
mixins: [globalMixins],
computed: {
filteredRequests() {
let searchTerm = this.search.toLowerCase();
let topFive: any = this.topFive()
if(this.search === null || this.search === '') {
return topFive
} else {
return topFive.filter((item: any) => {
return item.WorkflowDisplayName.toLowerCase().includes(searchTerm);
});
}
}
},
methods: {
topFiveRequests() {
// combine workflows first before running
this.combineRequestsAndWorkflows(this.$data.requests, this.$data.workflows);
// make copy of requests array
const requestsCopy = this.$data.requests.map((x: Request) => x);
// sort array by most recent
const mostRecentRequests = requestsCopy.sort((a: any, b: any) => {
const dateA: any = new Date(a.timeRequested);
const dateB: any = new Date(b.timeRequested);
return dateB - dateA;
});
const result = mostRecentRequests.splice(0, 4);
return result;
},
},
})
</script>
Скриншот ошибки с Vetur
Скриншот ошибки с tsLint в консоли
I