2013-01-21 21 views
5

türetilmiş bir sınıfta bir getter arasında super değerinin erişme çalışmak görünmüyor:Alt sınıftaki bir alıcının süper sınıf değerine nasıl erişebilirim?

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" 

nasıl doğru super değerinin getter ve yapmak kullanımını geçersiz kılabilir?

+2

Bu, TypeScript devralma işleminde birçok "getchas" dan sadece biridir. TS C# 'ya benziyor, bu da seni C# gibi davrandığını düşünmeye itiyor. Daha fazla bilgi için http://blog.wouldbetheologian.com/2012/11/various-typescript-weirdnesses.html adresini ziyaret edin :-(. –

+0

İyi blog. Teşekkürler. – JcFx

cevap

6

İlle

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

Kalıtım bu özellikle basit yapmaz ... Bu yaklaşım ile devam ettiğini onaylamadan söylemiyorum ama.

+0

Teşekkürler. Belirli bir model biçiminde harici bir kısıtlama var. Aşırı yükleme özelliklerini yoğun olarak kullanan (basamaklı yazdırma stilleri) - bu yaklaşım en azından TS ile çalışmamı sağlar. – JcFx

İlgili konular