看下面的代码:

module MyModule {
    class MyPrivateClass {
        ...
    }

    export class MyPublicClass {
        private var: MyPrivateClass; // MyPrivateClass is unknown
    }
}

我希望MyPrivateClass仅在MyModule内部可见,专门供MyPublicClass内部使用。在MyModule之外,只有MyPublicClass应该是可见的。我认为上面的布局应该可行,但是VS提示MyPublicClass内部看不到MyPrivateClass。
在MyPrivateClass的定义之前添加导出使MyPublicClass可以看到它,但是从外部也可以看到它。

有没有办法使它仅对MyPublicClass可见?

谢谢你。

最佳答案

这是一个工作示例,其中显示私有(private)类,公共(public)类,使用公共(public)类中的私有(private)类并尝试使用私有(private)类,这会产生错误。

如果仍然出现错误,是否可以透露试图用于引起问题的模块的名称?

module MyModule {
    class MyPrivateClass {
        doSomething() {
            return 1;
        }
    }

    export class MyPublicClass {
        private x = new MyPrivateClass();

        someFunction() {
            return this.x.doSomething();
        }
    }
}

var examplePublic = new MyModule.MyPublicClass();
var result = examplePublic.someFunction(); // 1

var examplePrivate = new MyModule.MyPrivateClass(); // error

10-04 15:25