Daktilo Özel statik özellikler

oy
9

Aşağıda böyle bir şey yaparsanız, nasıl sınıfa dışarı özelliğine erişebilir?

class Person
{
    private static name: string;
}

console.log(Person.name);

o ulaşılmaz olmamalı?

Oluştur 10/10/2012 saat 21:11
kaynak kullanıcı
Diğer dillerde...                            


3 cevaplar

oy
12

Bu bir hata olabilir ama değil gerekir. spec itibaren, bölüm 8.2.1:

Bu erişilebilirliğini belirtmek mümkün değildir statiği-onlar etkili her zaman herkese açıktır.

Statiği Erişilebilirlik düzenleyiciler takım geçmişte kabul etmiştir şey vardır. Güçlü bir kullanım durumunda varsa bu getirecektir codeplex sitede!

Cevap 10/10/2012 saat 21:17
kaynak kullanıcı

oy
1

Pek değil, yapabilirsin aslında. Belki en önemli typescript hakkında sormaktır sürümü o ilgilidir. Ben v1.5 beta , benim VS2012 kurulum kısmını (bu VS2013 hedeflemektedir rağmen evet, çalışır).

Böyle bir sınıf var:

class ItemListPreProcessor {

    private static names: string[] = [ 'Name', 'Age' ];

    static createHeader = (eltName: string) => {
        var pdiv = $(eltName);
        pdiv.html('<table><thead><tr></tr></thead></tr><tbody></tbody></table>');
        var row = $('tr', pdiv);
        ItemListPreProcessor.names.forEach((n) => {
            row.append('<th>' + n + '</th>');
        });
        return $('tbody', pdiv);
    };
}

Örneklemde hem görebilir yukarıda privateve static. Sınıf aşağıdaki JavaScript derlenmiş:

var ItemListPreProcessor = (function () {
    function ItemListPreProcessor() {
    }
    ItemListPreProcessor.names = ['Name', 'Age'];

    ItemListPreProcessor.createHeader = function (eltName) {
        var pdiv = $(eltName);
        pdiv.html('<table><thead><tr></tr></thead></tr><tbody></tbody></table>');
        var row = $('tr', pdiv);
        ItemListPreProcessor.names.forEach(function (n) {
            row.append('<th>' + n + '</th>');
        });
        return $('tbody', pdiv);
    };
    return ItemListPreProcessor;
})();

ve ya bunu derleme ile hiçbir sorun (bu bakınız) var, hem de onu infaz olarak (isterseniz siz deneyin, güven veya gereken bu).

Cevap 20/05/2015 saat 14:38
kaynak kullanıcı

oy
0
    class Person
{
    private static theName: string = "John";
    static get name():string{
        return Person.theName;
    }
}

console.log(Person.name);

Statik bir özellik özelse biz bunu erişmek için statik bir olsun yöntemini sağlamanız gerekir. Bu yaygın bir çözüm olmayabilir ama doğrudan özel statik özelliğe erişmek için bildiğim tek yoludur. aynı zamanda bir örneği nesneden özelliğine erişmek niyetinde Öte yandan, ikinci bir olsun yöntemi eklemek gerekebilir. Hem statik olsun yöntemi örneği nesneye görünmez olacağından yöntemleri aynı isme sahip olabilir olsun.

Cevap 16/11/2015 saat 20:52
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more