typescript 中的 export 和 public 有啥区别?
Posted
技术标签:
【中文标题】typescript 中的 export 和 public 有啥区别?【英文标题】:What is the difference between export and public in typescript?typescript 中的 export 和 public 有什么区别? 【发布时间】:2013-12-02 09:10:42 【问题描述】:我认为这是this question 的不同倾向。也许这个问题的措辞更好,你什么时候使用 public,而不是 export?从我的阅读来看,似乎 C#/Java 人认为公开的任何地方,你真正想要的是导出。
您将在何时/何地使用 public 而不是 export?
【问题讨论】:
【参考方案1】:public
作为可见性修饰符在技术上什么都不做(默认情况下,所有类成员都是公共的);它作为private
的明确对应物存在。仅在类内是合法的。
export
根据其上下文(在文件的***成员或module
块中)执行两种不同的操作。
在文件的顶层,export
表示包含文件是一个外部模块(即它将使用 RequireJS、Node 的 require
命令或其他一些 CommonJS/ AMD 兼容的加载程序)并且您放置 export
的符号应该是该外部模块的导出成员。
在module
块内,export
表示指定成员在该模块块外可见。 module
块中事物的默认值是“闭包隐私”——未导出的对象在模块外不可见。当module
内的声明具有export
修饰符时,它反而成为可以从模块外部访问的模块对象的属性。
public
和 export
在语言中没有任何地方是合法的,因此在这方面选择相对容易。
【讨论】:
好的,所以当我认为是公共的(来自 C#/Java)时,我使用导出的模块和类。但是对于类中的函数和变量,是不是也标记为导出呢?还是默认情况下它们是公开的,不需要导出? 类中没有“导出”的概念。默认情况下,所有成员都是公开的。 好的,谢谢。它是出口而不是公共的,这对我来说绝对很奇怪。我知道在 javascript 中发生的事情有点不同,但我认为仍然 public 应该隐含地表示导出。 一个令人困惑的话题的真正好答案!也许***导出应该有一个不同的名称,即使可能有低级相似性看起来是一个重要的区别,编译器错误也不清楚。 模块本身是否需要有导出限定符?【参考方案2】:export
专门用于模块,例如:
module foo
export var bar;
public
用于类成员/方法,例如:
class Foo
public bar = 123;
如果您想了解有关模块的更多信息,我制作了一个视频:http://www.youtube.com/watch?v=KDrWLMUY0R0&hd=1
【讨论】:
以上是关于typescript 中的 export 和 public 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章
带有 es6 导入的 Module.exports 用于 typescript 中的 webpack.config.ts
从nodejs,es6,typescript方面去弄清楚exports,require,export,import,export=