Typescript - 作为私有或受保护的对象

Posted

技术标签:

【中文标题】Typescript - 作为私有或受保护的对象【英文标题】:Typescript - object as a private or protected 【发布时间】: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 支持类中的受保护成员。 我将它完全用于继承。现在解决了。在模块声明中,未导出的东西是私有的或受保护的,它允许在类中使用受保护的或私有的-所以现在可以正常工作-谢谢:) 【参考方案1】:

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

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

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

【讨论】:

以上是关于Typescript - 作为私有或受保护的对象的主要内容,如果未能解决你的问题,请参考以下文章

我们啥时候应该考虑使用私有或受保护?

为啥类或接口不能接收私有或受保护的访问修饰符?

Android:将外部存储器上的文件夹设为私有或受保护

是否可以为具有 1)返回类型 void、2)访问说明符私有或受保护的方法编写单元测试?

检查和编辑对象的私有/受保护属性

访问受保护或私有财产