虽然与打字稿涉足,我意识到我的课模块中(作为命名空间)并不适用于其他类,除非我写的export
在他们面前的关键字,如:
module some.namespace.here
{
export class SomeClass{..}
}
所以,现在我可以用上面这样的代码:
var someVar = new some.namespace.here.SomeClass();
不过,我只是想知道,为什么这个关键字用来反对只使用public
其用于在方法级别以表示方法或属性应该是从外部访问的关键字。 那么为什么不直接使用同样的机制,使类和接口等外部可见?
这将使造成类似的代码:
module some.namespace.here
{
public class SomeClass{..}
}
主要的原因是, export
对ECMAScript的计划相匹配。 你可以说,“他们应该使用‘出口’,而不是‘公共’,但旁白‘出口/私营/保护’是一个匹配不佳组访问修饰符的,我相信有两种解释这之间的细微差别。
在打字稿,标志着一类成员的public
或private
对生成的JavaScript没有影响。 这是一个简单的设计/编译时间的工具,可以用来阻止你的打字稿代码访问的东西它不应该。
随着export
的关键字时,JavaScript添加一行将导出的项目添加到模块。 在您的例子: here.SomeClass = SomeClass;
。
所以,从概念上讲,通过控制知名度public
和private
仅仅是工具,而export
关键字改变输出。
文章来源: Why does Typescript use the keyword “export” to make classes and interfaces public?