当前位置: 首页 > 面试题库 >

继承方法调用触发Typescript编译器错误

左丘智渊
2023-03-14
问题内容

我在使用webstorm打字稿编译器时遇到问题。我有以下课程

export class rootData{
  id:string
  //...

  constructor(){
    //...
  }

  insert = ():Promise<any> =>{
    //...
  }
}

class child extends rootData {
  //...

  constructor(){
     super();
  }

  insert = ():Promise<any> => {
        return super.insert();
    }
}

因此,键入“ super”,我会在智能感知中看到所有rootData公共方法。但是在设置super.insert()之后,出现以下错误:

TS2340:仅可通过’super’关键字访问基类的公共和受保护的方法

在TS游乐场中尝试过,它正在工作(认为是简化版本)。

谢谢你的帮助。

编辑:检查编译的javascript后,超级方法的调用在那里。所以编译器给出了一个错误,但是编译了……


问题答案:

由于super调用已重定向到,因此prototype您不能使用,property而需要使用methodie不能使用= ()=>

固定代码:

export class rootData{
  id:string
  //...

  constructor(){
    //...
  }

  insert():Promise<any>{
    //...
  }
}

class child extends rootData {
  //...

  constructor(){
     super();
  }

  insert():Promise<any> {
        return super.insert();
    }
}


 类似资料:
  • 我正努力做: 但由于某种原因,我得到了编译器错误: CS0533'混凝土。Execute()'隐藏继承的抽象成员'程序。基础执行() 我在过去隐藏了很多成员,但从来没有遇到过这种情况,我在这里很困惑。在MSDN和web上花了很长时间,但找不到有关此行为的任何信息。 我真的非常感谢你对这个问题的任何见解。 这是小提琴。

  • 我有一个扩展了B类的a类。 A是这样定义的,它也覆盖了B的方法: B是这样定义的: 因此,如果我初始化A的一个对象,构造函数将调用调用方法doSomething()的超类之一。但哪一个会被处决?B的实现还是A中被重写的实现?

  • 问题内容: 我必须使用测试工具编译我的代码,但是,当该测试工具调用我的方法时,我收到此错误: “课程Course中的getCourseDetails方法不能应用于给定类型; 必需:java.lang.String,int,java.lang.String,boolean,java.lang.String.java.lang.String,double 找到:没有参数 原因:实际参数列表和形式参数列

  • 所以我看到它找不到promise和地图。

  • 问题内容: 假设我有以下两个课程 如果我启动一个beta类型的新对象,如何执行在alpha类而不是beta中找到的逻辑?我可以使用<-我想知道是否可行。 Eclipse IDE中的自动键入功能使我可以选择从class 或class中进行选择。 问题答案: 你可以做: 注意,这是对父级的引用,但是super()是它的构造函数。

  • 嘿,我正在尝试调用子类方法(ChildClass扩展了超类()) 它没有看到ChildClass方法,我只能调用SuperClass()中的方法,我知道这可能是一个愚蠢的问题,但无论如何干杯