请参阅以下评论:
class MyClassA {
constructor(optionalParam?: any) {
}
initialize(optionalParam?: any) {
}
}
class MyClassB extends MyClassA {
constructor(requiredParam: any) {
super(requiredParam);
// OK.
}
// I want to override this method and make the param required
// I can add the private modifier but I want it to
// be public and hide the method with optionalParam
initialize(requiredParam: any) {
// compiler error!
}
}
我该怎么做?
谢谢!
答案 0 :(得分:2)
编译器阻止您违反继承合同 - 建议的MyClassB
不能用作MyClassA
的替代。
考虑:
var x = new MyClassB(); // Create a new MyClassB
var y: MyClassA = x; // OK
y.initialize(); // OK... but MyClassB isn't going to get a value for requiredParam
您可以重构,以便MyClassB
不会从MyClassA
或任何其他选项派生。