【问题标题】:How to properly define a abstract method in a class that IDE will complain if abstract method is not implemented ?如果未实现抽象方法,如何在 IDE 会抱怨的类中正确定义抽象方法?
【发布时间】:2023-03-06 12:42:01
【问题描述】:

如何在抽象类中正确定义抽象方法?我希望 IDE 告诉我该抽象方法的实现是必须的。

我尝试了以下方法,但没有成功:

export abstract class MyAbstractClass {

   /**
    * @abstract
    */
   public submit() {
      throw new Error('This class must be implemented')
   }
}

问题是:如果您不这样做,我们如何让 IDE 抱怨 实现抽象方法?

【问题讨论】:

  • 你不能只添加 abstract 关键字而不是 public 吗?
  • abstract makeSound(input : string) : string; 其中input 是一个参数,第一个string 是类型检查,第二个string 是返回类型
  • @JacobHeater 不重复。我只是使用那里的语法,但我想知道是否有办法将它与 IDE 集成(例如 Visual Studio Code)
  • @AndreiTodorut 这将要求您实际正确定义 abstract 方法,因此使这个问题重复。 How can i properly define a abstract method in a abstract class ?

标签: javascript typescript


【解决方案1】:

试试这个:

export abstract class MyAbstractClass {
   // we shouldn't declare the body of abstract method
   abstract submit(): void;
}

//...

class MyClass extends MyAbstractClass {
}

你会看到 ide 抱怨:

您在问题示例中所做的 - 是 emulating abstract classes 的众所周知的 ES6 hack。但是 TypeScript 支持开箱即用的抽象类。更多详情可以查看official documentation on classes

还创建了stackblitz demo,大家可以去看看。

【讨论】:

  • @sherlock92,好的,但是当您在文件中分离这两个类时,IDE 不会抱怨缺少抽象方法的实现。
  • 我在这里没有看到任何问题。检查更新后的stackblitz demo - 我已经将课程分成了两个文件,但仍然收到抱怨。
猜你喜欢
  • 2013-05-30
  • 1970-01-01
  • 2016-11-08
  • 1970-01-01
  • 1970-01-01
  • 2012-09-21
  • 2017-09-26
  • 2016-12-28
  • 1970-01-01
相关资源
最近更新 更多