在c ++等语言中可以看到纯虚函数,并提供了一种在子类中强制实现函数的方法。
例如:
class AbstractBaseClass
{
virtual void speak() = 0;
}
class Subclass
{
virtual void speak() override // implementation must exist
{
std::cout << "I am a subclass";
}
}
使用Javascript等语言模拟纯虚函数的最佳方法是什么?
如果调用已到达原型链的这一部分,可能的解决方案可能是在基类函数中抛出异常:
class BaseClass // ES6
{
speak() { throw "Implementation of abstract method not found" }
}
是否有更好的解决方案?
答案 0 :(得分:0)
您可以使用TypeScript,然后转换为JavaScript(使用ts,babel ...)。 ts将静态检查它,而不是在运行时检查它!
这是一个接口,是一个抽象,最后是类的实现。
interface IExample {
method(param: any): any;
}
abstract class AExample implements IExample {
abstract method(param: any): any;
}
class Example extends AExample {
method(param: any): any {
console.log('hello');
}
}