在尝试使用 Typescript 时,我意识到模块中的类(用作命名空间)对其他类不可用,除非我在它们之前写了 export
关键字,例如:
module some.namespace.here
{
export class SomeClass{..}
}
所以现在我可以像这样使用上面的代码:
var someVar = new some.namespace.here.SomeClass();
但是我只是想知道为什么使用此关键字而不是仅使用在方法级别使用的 public
关键字来表示方法或属性应该可以从外部访问。那么为什么不使用同样的机制使类和接口(interface)等在外部可见呢?
这将给出如下结果代码:
module some.namespace.here
{
public class SomeClass{..}
}
最佳答案
主要原因是 export
符合 ECMAScript 的计划。你可能会争辩说“他们应该使用‘export’而不是‘public’,但是除了‘export/private/protected’是一组不匹配的访问修饰符之外,我相信这两者之间存在微妙的差异来解释这一点.
在 TypeScript 中,将类成员标记为 public
或 private
对生成的 JavaScript 没有影响。它只是一个设计/编译时工具,您可以使用它来阻止您的 TypeScript 代码访问它不应该访问的内容。
使用 export
关键字,JavaScript 添加一行以将导出项添加到模块。在您的示例中:here.SomeClass = SomeClass;
。
因此从概念上讲,由 public
和 private
控制的可见性仅用于工具,而 export
关键字会更改输出。
关于typescript - 为什么 Typescript 使用关键字 "export"来公开类和接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15760462/