【问题标题】:Typescript - object as a private or protectedTypescript - 作为私有或受保护的对象
【发布时间】:2016-01-18 18:29:23
【问题描述】:

如何在 Typescript 中将对象定义为受保护的或私有的?

我不能在界面中这样做(只允许公开), 我也不能在课堂上这样做,因为下面不起作用。

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

有什么提示吗? 谢谢

Zoltán Tamási - 感谢您的帮助,

在界面中

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

【问题讨论】:

  • 如果在模块内部定义接口,可以导出也可以不导出。通过不导出它,您可以在模块级别实现类似私有的行为。
  • 啊,太好了!正是我所缺少的。所以私有是可能的,有任何关于 protected 的提示吗?
  • Protected 在这种情况下对类或接口没有意义。 protected 只能是类的成员,这意味着只有子类可以访问它。顺便说一下,据我所知,TypeScript 1.5 支持类中的受保护成员。
  • 我将它完全用于继承。现在解决了。在模块声明中,未导出的东西是私有的或受保护的,它允许在类中使用受保护的或私有的-所以现在可以正常工作-谢谢:)

标签: javascript interface typescript private protected


【解决方案1】:

如果您在module 中定义一个类或接口,您可以使用export 关键字来选择是否要export

如果一个类或接口没有被导出,那么它只在声明模块中可见。

但是,如果在导出类的任何公共成员、方法等中使用了非导出类或接口,则会出现编译错误,然后必须将其导出。

【讨论】:

    猜你喜欢
    • 2012-06-22
    • 1970-01-01
    • 2011-12-12
    • 1970-01-01
    • 2015-08-11
    • 1970-01-01
    • 1970-01-01
    • 2010-09-16
    • 1970-01-01
    相关资源
    最近更新 更多