source

TypeScript의 개인 정적 속성

manysource 2023. 7. 19. 21:26

TypeScript의 개인 정적 속성

아래와 같은 작업을 수행하면 클래스 외부의 숙박업소에 어떻게 액세스할 수 있습니까?

class Person
{
    private static name: string;
}

console.log(Person.name);

접근이 불가능하지 않을까요?

그것은 오류여야 하지만 그렇지 않습니다.사양의 섹션 8.2.1:

통계의 접근성은 지정할 수 없습니다. 통계는 사실상 항상 공개되어 있습니다.

통계에 대한 접근성 수식어는 팀이 과거에 고려했던 사항입니다.강력한 활용 사례가 있다면 코드플렉스 사이트에서 이 문제를 제기해야 합니다!

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

console.log(Person.name);

정적 속성이 비공개인 경우에는 정적 속성에 액세스하기 위한 정적 가져오기 방법을 제공해야 합니다.이것은 일반적인 해결책은 아닐 수도 있지만 개인 정적 속성에 직접 액세스하는 유일한 방법입니다.반면에 인스턴스화된 개체에서 속성에 액세스하려는 경우 두 번째 get 메서드를 추가해야 할 수도 있습니다.정적 get 메서드는 인스턴스화된 개체에 표시되지 않으므로 두 get 메서드 모두 이름이 같을 수 있습니다.

음, 사실은 그렇지 않아요, 사실 당신은 할 수 있어요.아마도 가장 중요한 것은 그것과 관련된 TypeScript 버전에 대해 물어보는 것입니다.VS2012 설치의 일부인 v1.5 베타 버전이 있습니다(예, VS2013을 대상으로 함에도 불구하고 작동합니다).

다음과 같은 수업이 있습니다.

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

위의 샘플에서 두 가지를 모두 볼 수 있습니다.private그리고.static클래스는 다음 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;
})();

컴파일(표시된 것처럼)과 실행(신뢰할 수 있는 작업 또는 시도)에 문제가 없습니다.

언급URL : https://stackoverflow.com/questions/12827544/private-static-properties-in-typescript