Typescript - объект как частный или защищенный

Как я могу определить объект как защищенный или частный в Typescript?

Я не могу сделать это в интерфейсе (разрешено только публично), и я не могу сделать это внутри класса, потому что ниже не работает.

private options : interface{
    collapsible  : boolean;
    collapsed    : boolean;
    editable     : boolean;
}

Любые подсказки? Спасибо

Золтан Тамаси - Спасибо за помощь,

В интерфейсе

declare module ICoreModule{
    // protected or private
    interface IOptions{
        initWhenDataReady   : boolean;
        collapsible         : boolean;
        collapsed           : boolean;
        editable            : boolean;
    }

    export interface ICoreScope extends ng.IScope{
        sandboxSave : Function;
        data        : Object;
    }

    export interface Class extends App.Directive{
        $scope   : ICoreScope;
        $element : ng.IRootElementService;
        $attr    : ICoreAttr;
        $ctrl    : ng.IFormController;
    }
}

В классе:

protected options : ICoreModule.IOptions = <ICoreModule.IOptions>{
    initWhenDataReady   : true,
    collapsible         : true,
    collapsed           : true,
    editable            : true
};

person Nath    schedule 20.10.2015    source источник
comment
Если вы определяете интерфейс внутри модуля, вы можете экспортировать его или нет. Не экспортируя его, вы можете добиться приватного поведения на уровне модуля.   -  person Zoltán Tamási    schedule 20.10.2015
comment
Ах, здорово! Именно то, чего мне не хватало. Так что частный возможен, какие-нибудь подсказки для защищенного?   -  person Nath    schedule 20.10.2015
comment
Protected не имеет смысла для классов или интерфейсов в этом сценарии. Защищенный может быть только членом класса, что означает, что к нему могут получить доступ только подклассы. Кстати, насколько я знаю, TypeScript 1.5 поддерживает защищенные члены внутри классов.   -  person Zoltán Tamási    schedule 20.10.2015
comment
Я использую его именно для наследования. Теперь решил. В объявлении модуля то, что не экспортируется, является приватным или защищенным, позволяет использовать защищенное или приватное в классе - так что теперь все работает нормально - спасибо :)   -  person Nath    schedule 20.10.2015


Ответы (1)


Если вы определяете класс или интертейс внутри module, вы можете выбрать, хотите ли вы export его или нет, используя ключевое слово export.

Если класс или интерфейс не экспортированы, то он виден только внутри объявляющего модуля.

Однако, если неэкспортируемый класс или интерфейс используется в каком-либо общедоступном члене, методе и т. д. экспортируемого класса, вы получите ошибку компиляции, и тогда вам придется экспортировать его.

person Zoltán Tamási    schedule 20.10.2015