【发布时间】:2019-05-03 14:16:37
【问题描述】:
我在模拟一个接口类:
const error = "Child must implement method";
class MyInterface
{
normalFunction()
{
throw error;
}
async asyncFunction()
{
return new Promise(() => Promise.reject(error));
}
}
class MyImplementation extends MyInterface
{
}
如果在没有覆盖实现的情况下调用任何接口方法,则会引发错误。但是,这些错误只会在执行时出现。
有没有办法检查函数在构造时是否被覆盖?
【问题讨论】:
-
"at construction": 你的意思是
MyImplementation的实例的构造? -
@trincot 是的,很可能在
MyInterface构造函数中 -
您必须实现类似工厂模式的东西来执行该检查。我不认为 JS 有原生的东西可以做到这一点。
-
顺便说一句:你可以在
throwasync函数中的错误:这将导致返回的承诺被拒绝。 -
@trincot 是的。我这样做是为了加强函数的“异步性”。我有点忙,但很快就会看看你的解决方案
标签: javascript inheritance ecmascript-6