如何使用可选参数覆盖/隐藏方法?

时间:2013-01-30 23:32:33

标签: typescript

请参阅以下评论:

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!
    }
}

我该怎么做?

谢谢!

1 个答案:

答案 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或任何其他选项派生。