TypeScript:使类仅在模块内可见

vex*_*tor 10 typescript

看看下面的代码:

module MyModule {
    class MyPrivateClass {
        ...
    }

    export class MyPublicClass {
        private var: MyPrivateClass; // MyPrivateClass is unknown
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望MyPrivateClass仅在MyModule中可见,特别是在MyPublicClass中内部使用.在MyModule之外,只有MyPublicClass可见.我认为上面的布局应该做但VS抱怨MyPrivateClassMyPublicClass中不可见.在MyPrivateClass的定义之前添加导出使其对MyPublicClass可见,但是它也可以从外部看到.

有没有办法让它只对MyPublicClass可见?

谢谢.

Fen*_*ton 7

下面是一个工作示例,它显示私有类(公共类),使用公共类中的私有类并尝试使用生成错误的私有类.

如果仍然出现错误,您是否能够透露您尝试用于导致问题的模块的名称?

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
Run Code Online (Sandbox Code Playgroud)


Mat*_*ott 0

嗯,我没有看到任何问题,但不要忘记初始化字段值,否则编译器将不会生成该字段:

module MyModule {
    class MyPrivateClass {

    }

    export class MyPublicClass {
        private instance: MyPrivateClass; // MyPrivateClass is unknown
        constructor() {
           this.instance = new MyPrivateClass();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)