vue中的Typescript - 类型'Vue |上不存在属性'validate'元素| Vue [] |元件[]'。
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue中的Typescript - 类型'Vue |上不存在属性'validate'元素| Vue [] |元件[]'。相关的知识,希望对你有一定的参考价值。
我这样创造了v-form
<v-form ref="form" v-model="valid" lazy-validation>
...
<v-btn
:disabled="!valid"
@click="submit"
>
submit
</v-btn>
</v-form>
脚本:
if (this.$refs.form.validate()) // Error is in here
如果我只是console.log(this.$ref.form)
,validate()函数可用。但为什么这个错误在建设时会出现?
在Vue
模板语法中,可以在ref
实例或DOM元素上使用Vue
属性。如果在ref
循环中使用v-for
,则会检索Vue
实例或DOM元素的数组。
这就是为什么this.$refs
可以返回Vue | Element | Vue[] | Element[]
。
为了让TypeScript
知道正在使用哪种类型,应该使用该值。
人们可以这样做:
(this.$refs.form as Vue).validate()
或(<Vue>this.$refs.form).validate()
我们把它投到Vue
,因为v-form
是Vue
实例(组件)而不是Element
。
我个人的偏好是创建一个计算属性,它返回已经铸造的Vue
实例或DOM元素。
即。
computed: {
form(): Vue {
return this.$refs.form as Vue
}
}
然后就像这样使用它:this.form.validate()
let form: any = this.$refs.form
if(form.validate){}
以上是关于vue中的Typescript - 类型'Vue |上不存在属性'validate'元素| Vue [] |元件[]'。的主要内容,如果未能解决你的问题,请参考以下文章
vue-type-check: Vue 模板中的 Typescript 类型检查
vue3+typescript实战记录二(typescript-eslint)
使用 Typescript 在 Vue 3 中的函数上缺少返回类型
VS Code 中的 Vue Array Prop JSDoc TypeScript 错误:“ArrayConstructor”类型缺少“MyCustomType []”类型中的以下属性