Egyéni statikus tulajdonságok géppel

szavazat
9

Ha ilyesmit alább hogyan érhető el a tulajdonság ki az osztály?

class Person
{
    private static name: string;
}

console.log(Person.name);

Ha nem lenne elérhető?

A kérdést 10/10/2012 21:11
a forrás felhasználó
Más nyelveken...                            


3 válasz

szavazat
12

Meg kell, hogy hiba, de nem az. A spec 8.2.1:

Nem lehetséges, hogy meghatározza a hozzáférhetőség statika-ezek gyakorlatilag mindig nyilvános.

Kisegítő módosítót statikai valamit a csapat tekinthető a múltban. Ha van egy erős használat esetén meg kell hozni ezt fel codeplex honlapon!

Válaszolt 10/10/2012 21:17
a forrás felhasználó

szavazat
1

Nos, nem igazán, sőt akkor. Talán a legfontosabb, hogy kérje a géppel változata vonatkozik. Van v1.5 beta , része a VS2012 telepítés (igen, ez működik annak ellenére, hogy célozza VS2013).

Van egy osztály, mint ez:

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);
    };
}

A fenti példában láthatjuk mind private, és static. Az osztály összeállítani, hogy a következő Javascript:

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;
})();

és nincs probléma sem fordítják le (ezt látod), valamint a végrehajtó azt (ezt meg kell bízni, vagy ha úgy tetszik, próbáld).

Válaszolt 20/05/2015 14:38
a forrás felhasználó

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

console.log(Person.name);

Ha egy statikus tulajdonság privát biztosítanunk kell a statikus get módszerrel elérni. Ez nem lehet egy közös megoldás, de ez az egyetlen módja tudok, hogy közvetlenül hozzáférjenek a saját statikus tulajdonság. Másrészt, akkor lehet, hogy egy második get módszert, ha azt is szándékozik a tulajdonság egy példányai objektumot. Mindkét kap módszerekkel lehet ugyanaz a neve, mivel a statikus get módszer láthatatlan lesz a példányosítva objektumot.

Válaszolt 16/11/2015 20:52
a forrás felhasználó

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