2

以下のコメントを参照してください。

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

これどうやってするの?

ありがとう!

4

1 に答える 1

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

于 2013-01-30T23:53:16.223 に答える