【问题标题】:This expression is not callable. Type 'Boolean' has no call signatures此表达式不可调用。类型“布尔”没有调用签名
【发布时间】:2021-10-11 12:10:36
【问题描述】:

我开始研究一堆新的技术,并且应该研究新的错误。

但是有一种错误困扰着我。而且我不确定我是否在做正确的事情。

例如,我对所有 Vue 组件都收到此错误:

类型 '{ onInput(event: any): void; 上不存在属性 'focused'焦点():无效;模糊():无效; }'。您是说“专注”吗?

blur(): void {
  this.focused = false
}

我用类似的方法解决了这个错误:

blur(): void {
  (this as any).focused = false
}

但我很困惑,我绝对需要在任何地方和每个组件中执行此操作。

而且我根本不知道如何解决以下错误:

此表达式不可调用。 'Boolean' 类型没有调用签名。

blur(): void {
  (this as any).l.focused = false
}

发誓“假”。

data()代码:

data(): any {
  return {
    l: {
      focused: false
    }
  }
},

您能告诉我在这种情况下如何正确格式化代码吗?

【问题讨论】:

    标签: typescript vue.js nuxt.js


    【解决方案1】:

    要让 TypeScript 正确推断 Vue 组件选项中的类型,您需要使用 Vue.component 或 Vue.extend 定义组件:

    https://vuejs.org/v2/guide/typescript.html#Basic-Usage

    【讨论】:

    • 在 Vue 3 中,我们必须使用 defineComponent 吗?我说的对吗?
    • @hackwithharsha 是的,Vue 3 文档是这么说的。但 Nuxt 目前不支持 Vue 3。但是对于 Vue 2 个人来说,我在使用组合 api 的时候使用了 Vue.extend。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-08
    • 2020-12-27
    • 1970-01-01
    • 2020-06-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多