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

Angular 5中继承链用super访问父类公共getter报TS2340错误如何解决?

解决TypeScript TS2340错误:通过super访问父类public getter的问题

我之前处理过类似的TypeScript继承场景,你碰到的这个TS2340错误,本质是TypeScript解析super.text时的一个语法检查细节——虽然父类的text是public的getter,但直接用点语法通过super访问它,TypeScript会误判为尝试调用非public方法,从而抛出错误。下面给你两种可行的解决办法:

方法一:用方括号语法访问父类getter

直接修改子类的getter实现,把点语法换成方括号访问,绕开TypeScript的语法检查限制:

public get text(): string { 
  return super['text']; 
}

这种方式不用修改父类代码,能快速保留原有继承结构。

方法二:把父类getter逻辑抽成protected方法

如果觉得方括号写法不够优雅,可以重构父类代码,将getter的核心逻辑封装到一个protected方法里,子类直接调用该方法即可(无需依赖super):

父类修改后:

protected getRawText(): string {
  return this.el.attr('text/text').replace("\n", "");
}

public get text() { 
  return this.getRawText(); 
}

子类修改后:

public get text(): string { 
  return this.getRawText(); 
}

这种方式更贴合TypeScript的继承设计规范,代码结构也更清晰,后续维护起来更方便。

你可以根据自身代码场景选择其中一种方案,两种都能解决TS2340的错误。

内容的提问来源于stack exchange,提问作者Denise Mauldin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:07:16