在Javascript中模拟纯虚函数

时间:2017-11-13 13:54:30

标签: javascript virtual-functions

在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" }
}

是否有更好的解决方案?

1 个答案:

答案 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');
     }
}