基类

时间:2015-06-05 08:41:57

标签: typescript

基本上我想在基类上有一个可选的方法,并且继承的类可以实现或不实现该方法。

class One
{
method()
    {
        // optional
    }
}

class Two extends One
{
    // some classes don't implement it
}

class Three extends One
{
    // others do
method()
    {
        // doStuff();
    }
}

然后我会弄清楚该方法是否存在。

if ( object.method )
    {
    object.method();
    }

这个想法是没有为每个对象调用该方法(不调用空函数),而只是在定义了某些东西时。

我可以这样做,但如果有一些更好的方式我会失踪..

class One
{
method: () => any;

constructor()
    {
    this.method = null;
    }   
}

class Two extends One
{
constructor()
    {
    super();

    this.method = this._method;
    }

_method()
    {
        // doStuff();
    }
}

感谢。

2 个答案:

答案 0 :(得分:1)

使用合成。定义包含该方法的接口。只有某些类实现了该接口。

您可以在运行时检查对象是否实现了该接口。

答案 1 :(得分:1)

通过分配给基类中的null,你的生活有点痛苦。如果你不这样做,代码会变得更简单:

class One {
    method: () => any;

    constructor() {        
    }
}

class Two extends One {
    constructor() {
        super();
    }

    method = () => {
        // doStuff();
    }
}

默认情况下它是undefined,并将其分配给null没有特殊价值。