【问题标题】:Typescript/ESLint : override getter and call the super method (error ts(2340) and ts(2339))Typescript/ESLint:覆盖 getter 并调用 super 方法(错误 ts(2340) 和 ts(2339))
【发布时间】:2021-02-11 15:45:37
【问题描述】:

使用 Typescript,我使用 getter 创建类。我想重新定义一些吸气剂,但使用超级。现在,当我输入以下代码行时,出现以下错误消息:

class A  {
   protected get style(): React.CSSProperties | undefined {
      return {width: '100%'};
   }
}

class B extends B {
   protected get style(): React.CSSProperties | undefined {
      return super.style;
   }
}

只有基类的 public 和 protected 方法可以通过 'super' 关键字访问。ts(2340)

如果我输入:

this.super.style

,编辑器(VSCode)告诉我super在这上面不存在

类型 'A'.ts(2339) 上不存在属性 'super'

【问题讨论】:

    标签: typescript eslint getter-setter super


    【解决方案1】:

    这个seems to work fine

    class B extends A {
       protected get style(): React.CSSProperties | undefined {
          return super.style;
       }
    }
    

    当然,在您的示例中,扩展 style getter 是没有意义的,因为它返回的值与其他情况下相同。

    【讨论】:

    • 我同意你的看法。迄今为止,在我的示例中,我对子类的 getter 是无用的,但目标是超载。在我这边,当我调用 super.style 时,我总是在 VSCode 中遇到错误:只有基类的公共和受保护方法才能通过“super”关键字访问。 ts (2340)
    • 如果我将 getter 转换为 getStyle 方法,我没有错误...
    • 这可能是要走的路。老实说,打字稿游乐场允许从 super 访问属性,我有点惊讶。
    猜你喜欢
    • 2019-05-03
    • 2021-08-16
    • 2021-08-25
    • 1970-01-01
    • 2019-05-24
    • 1970-01-01
    • 2017-05-02
    • 2021-04-10
    • 2022-01-11
    相关资源
    最近更新 更多