基本上我想在基类上有一个可选的方法,并且继承的类可以实现或不实现该方法。
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();
}
}
感谢。
答案 0 :(得分:1)
使用合成。定义包含该方法的接口。只有某些类实现了该接口。
您可以在运行时检查对象是否实现了该接口。
答案 1 :(得分:1)
通过将分配给基类中的null
,你的生活有点痛苦。如果你不这样做,代码会变得更简单:
class One {
method: () => any;
constructor() {
}
}
class Two extends One {
constructor() {
super();
}
method = () => {
// doStuff();
}
}
默认情况下它是undefined
,并将其分配给null
没有特殊价值。