You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript两类方法定义报错'() => Bar缺少x、y属性'如何解决?

两个写法的核心区别

  • getBar1是类的常规实例方法声明语法:方法名(): 返回值类型,这里的: Bar标注的是方法调用后的返回值类型为Bar,符合语法规则,因此可以正常编译。
  • getBar2是类的实例属性声明语法:属性名: 属性类型 = 赋值内容,你当前写的: Bar是标注属性本身的类型为Bar,但你实际给这个属性赋值的是一个返回Bar类型的箭头函数,函数本身的类型是() => Bar,和Bar接口类型完全不匹配,因此编译器抛出类型错误。

修复方案

只需要把getBar2的属性类型改为「返回Bar类型的函数类型」即可,修改后的代码如下:

interface Bar {
  x: Number,
  y: Number
}

class Foo {
  public getBar1(): Bar {
    return { x: 1, y: 2 } as Bar; 
  }

  // 将属性类型从Bar调整为() => Bar即可正常编译
  getBar2: () => Bar = () => {
    return { x: 1, y: 2 } as Bar
  };
}

内容的提问来源于stack exchange,提问作者Jonathan Byrne

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 18:03:03