当前位置: 首页 > 知识库问答 >
问题:

为什么Typescript使用关键字“export”来使类和接口公开?

滑令
2023-03-14

在使用Typescript时,我意识到模块中的类(用作命名空间)对于其他类是不可用的,除非我在它们前面写了export关键字,例如:

module some.namespace.here
{
   export class SomeClass{..}
}
var someVar = new some.namespace.here.SomeClass();

但是,我只是想知道为什么使用这个关键字而不是仅仅使用public关键字,后者在方法级别用于表示方法或属性应该是外部可访问的。那么,为什么不直接使用这种机制来使类和接口等外部可见呢?

这将给出如下代码:

module some.namespace.here
{
   public class SomeClass{..}
}

共有1个答案

沈博涉
2023-03-14

史蒂夫·芬顿的回答需要补充几点:

  • export已经意味着两种不同的东西(取决于它是否处于顶级);使其表示第三个可能比添加public/private
  • 更糟糕
  • 绝对不是为了让实现更容易;publicexport相比,增加的复杂性微不足道。我们已经改变了很多关键词;不难。
  • 类成员的默认可见性必须是公共的,以与ES6类建议保持一致,因此我们需要一些关键字来指示“not public”。export(unexport??)没有合适的反义词,因此private是合乎逻辑的选择。一旦有了private,不选择public作为对应项就有点疯狂了
  • 使用export修改内部模块中的可见性是与ES6模块的最佳对齐方式
 类似资料:
  • 请问这个为什么要用this啊,不是都在export default中吗? 我只知道this有代表当前类的意思,这个不太懂欸。目前做毕设在跟小白速成课,基础非常差,希望有好心人可以帮忙解答一下,谢谢啦。

  • 我正在学习角度,选择了一个视频课程和一本pdf书,现在我对“出口”关键字的使用感到困惑... 两门课的一个例子来展示我的困惑...我只需要朝正确的方向快速踢一脚,就能克服这个小障碍。 Visual Studio 2017 示例项目使我在clientapp/app文件夹中创建了一个接口文件夹,并在其中放置了一个接口“answer.ts”。这是没有关键字“导出”。

  • 我首先查看了新的ASP.NET标识类和它使用实体框架代码创建的数据库上的接口。我使用的是Visual Studio 2013 RC。 乍一看,数据库模式看起来相当正常: 但是所有的键都是NVARCHAR(128) http://www.asp.net/identity/overview/extensibility/change-primary-key-for-users-in-aspnet-ide

  • 问题内容: 当我们在Java中使用关键字时,到底使用了哪个同步原语?? 编辑: JVM如何在本机级别实现锁? 问题答案: 在字节码级别上,Java具有和操作,在Java虚拟机规范的此页中进行了记录,并在下面粘贴了摘录( objectref 是该操作的操作数,取自堆栈): 监控 代码段 每个对象都有一个与其关联的监视器。执行 monitorenter 的线程 获得与 objectref 关联的监视器

  • 乍一看,这似乎并不是非常有用(即使是错误提及原始类型),但随着类型注释变得更加复杂, 关键字的好处变得明显。 联合类型允许类型注释指定属性应该是一组类型之一(两者任一)。 function admitAge (age: number|string): string { return `I am ${age}, alright?!`; } admitAge('Forty'); // 'I am

  • 这个问题直接类似于使用TypeScript进行类类型检查