【发布时间】:2020-02-01 23:01:37
【问题描述】:
我正在尝试构建一个使用 Typescript 严格键入的 vue.js 项目。
我使用 VeeValidate 来构建一个表单。我使用对 VeeValidate ValidationObserver 的引用来处理提交的表单。 我也使用 vue-class-component。
这是我尝试在代码中键入 ValidationObserver 组件的方式。
<template>
<ValidationObserver tag="form" ref="repertoireForm" @submit.prevent="submitForm">
<ValidationProvider rules="required"></ValidationProvider>
</ValidationObserver>
</template>
<script lang="ts">
import Vue from 'vue';
import Component from 'vue-class-component';
import {ValidationObserver, ValidationProvider} from 'vee-validate';
@Component({
components: {
ValidationObserver,
ValidationProvider,
},
})
export default class RepertoireForm extends Vue
$refs!: {
// here is what I'm trying to type
repertoireForm: ValidationObserver,
}
async submitForm(e: Event): Promise<void> {
const valid = await this.$refs.repertoireForm.validate();
// some submit routine here
}
}
</script>
当我尝试编译它时,我得到了以下错误:
TS2749:“ValidationObserver”指的是一个值,但被用作 在这里输入。
我怎样才能正确输入这个 repertoireForm $refs ?
【问题讨论】:
标签: typescript vue.js vee-validate