Vue 类型不存在属性

Posted

技术标签:

【中文标题】Vue 类型不存在属性【英文标题】:Property does not exist on type Vue 【发布时间】:2022-01-07 10:46:50 【问题描述】:

我正在使用 ref 来获取一个值,并且我将“Vue”类型上的属性“值”不存在作为错误。 这是我的代码

  confirmPasswordRules: [
          (v: string ) => !!v || "Password is required",
          (v: string ) => (this.$refs.password) && (v === this.$refs.password.value  || "Passwords do not match")
  ],

我使用 console.log 打印出 this.$refs.password.value 所以它确实有一个值。我还尝试了(this.$refs.password as Vue & password: () => string ).validate()) 来验证价值,但这没有用。我需要进行哪些更改?

【问题讨论】:

【参考方案1】:

模板引用的类型为unknown,因此需要将它们类型断言为目标元素的类型。假设模板 ref 位于 <input> 上,则类型断言将为 as htmlInputElement

confirmPasswordRules: [
  (v: string) => this.$refs.password && (v === (this.$refs.password as HTMLInputElement).value  || "Passwords do not match")
                                                ---------------------------------------
                                                                   ?
],

【讨论】:

【参考方案2】:

计算属性在 onMount 事件之前被解析,这意味着模板部分还没有被渲染并且 refs 没有到位。您可以在触发操作之前检查您的 ref 是否存在。

(v: string ) => (this.$refs?.password?.value) && (v === this.$refs.password.value  || "Passwords do not match")

【讨论】:

以上是关于Vue 类型不存在属性的主要内容,如果未能解决你的问题,请参考以下文章

Vue CLI 3 typescript - 类型“Vue”上不存在属性“x”

“Vue”类型上不存在属性“$keycloak”

Vue js 3 - 类型“CreateComponentPublicInstance<、、、、 上不存在属性“项目”,

类型 ' $route(currentRoute: any): void; 上不存在属性' 在 Ionic Vue 中

全局属性的“功能”类型上不存在 Vue3 属性“x”

Vue.js 3 属性“$store”在“CreateComponentPublicInstance”类型上不存在