2013-01-21 10 views
5

Dostęp wartość super o getter w klasie pochodnej nie wydają się działać:W jaki sposób uzyskać dostęp do wartości nadklasy gettera w podklasie?

class Foo { 
    private _message:string = "Hello,"; 

    public get Message():string { 
     return this._message; 
    } 
} 

class Bar extends Foo { 
    public get Message():string { 
     return super.Message + " World"; 
    } 
} 

var snafu:Bar = new Bar(); 
document.write(snafu.Message); 

// Expected: "Hello, World" 
// Actual: "undefined World" 

Jak mogę poprawnie przesłonić getter i korzystania z wartości super?

+2

To tylko jeden z wielu "gotchów" w dziedziczeniu TypeScript. TS wygląda tak bardzo jak C#, że to cię oszukuje, myśląc, że działa tak samo jak C#. Zobacz http://blog.wouldbetheologian.com/2012/11/various-typescript-weirdnesses.html dla kilku innych :-( –

+0

Dobry blog.Dziękuję – JcFx

Odpowiedz

6

Ja nie koniecznie popierając że nadal z tym podejściem, ale ...

class Bar extends Foo { 
    public get Message():string { 
     return Object.getOwnPropertyDescriptor(Foo.prototype, 'Message').get.apply(this) + ' World'; 
    } 
} 

prototypal dziedziczenie nie robi to szczególnie proste.

+0

Dzięki. Mam zewnętrzne ograniczenie w postaci określonego modelu (kaskadowych stylów wydruku), które znacznie przesłoniły właściwości - takie podejście przynajmniej pozwala mi pracować z nim w TS. – JcFx

Powiązane problemy