打字稿中的export和public有什么区别?

时间:2013-11-19 00:43:56

标签: typescript public

我认为这是this question的不同倾向。也许问题是更好的措辞,你什么时候使用公共,而不是出口?从我的阅读来看,似乎C#/ Java人认为公开的任何地方,你真正想要的是出口。

何时/何地使用公开而不是出口?

2 个答案:

答案 0 :(得分:15)

public作为可见性修饰符在技术上什么都不做(默认情况下所有类成员都是公共的);它作为private的明确对应物存在。它只在课堂内合法。

export根据其上下文(在文件中的顶级成员或module块中)执行两项不同的操作。

在文件的顶层,export表示包含的文件是外部模块(即它将使用RequireJS,Node的require命令加载,或者其他一些与CommonJS / AMD兼容的加载器),你放置export的符号应该是该外部模块的导出成员。

module块内,export表示指定的成员在该模块块外可见。 module块中的事物的默认值是“闭包隐私” - 未导出的对象在模块外部不可见。当module中的声明具有export修饰符时,它将成为模块对象的属性,可以从模块外部访问。

语言中没有publicexport合法的地方,因此在这方面选择相对容易。

答案 1 :(得分:1)

export专门用于模块,例如:

module foo{
    export var bar;
}

public适用于班级成员/方法,例如:

class Foo{
    public bar = 123;
}

如果您想了解有关模块的更多信息,我会在其上发布视频:http://www.youtube.com/watch?v=KDrWLMUY0R0&hd=1