Angular:导出类和公共类之间的区别?

Posted

技术标签:

【中文标题】Angular:导出类和公共类之间的区别?【英文标题】:Angular: Difference between Export and Public Class? 【发布时间】:2020-01-29 06:37:22 【问题描述】:

在 Angular 中,导出类和公共类有什么区别?

“Angular 导入/导出用于使一个模块的内容可用于另一个模块。那么这与公共类有何不同?”

参考问题: What is the exact meaning of export keyword in Angular 2\TypeScript?

例子:

export class Product 
constructor(
public id?: number,
public name?: string,
public category?: string,
public description?: string,
public price?: number)  

【问题讨论】:

export 以便您可以在另一个类中导入,public 以便您可以从另一个类访问该类 公开某些内容并不会自动使其可供导入。您需要将其导出以使其可用于在其他文件中导入。这不是 Angular 的东西,它是 typescript/es6 的东西。 嗨@AlexanderStaroselsky 好的,请随意写作为答案,我可以发送积分,谢谢 嗨 @joyBlanks 看到上面的评论,谢谢 export 以便您可以在另一个类中导入,public 以便您可以从另一个类访问该类。即使您必须导入它才能访问它。如果即使在导入后也将其设为私有,您也无法访问它。阅读有关访问修饰符的更多信息 【参考方案1】:

历史

ES6/ES2015(ECMA 脚本)在语言中引入了原生的模块系统。在 ES6 之前,javascript 应用程序使用 requirejs 之类的库来实现模块系统。

模块

类、函数、常量等可以从一个模块中导出,也可以导入到其他模块中。未导出的内容是模块内部的。

尽管 TypeScript 在 ES 2015 之前有类似的概念,但该语言采用 ES6 模块系统来保持一致性和标准。在这里阅读更多。 https://www.typescriptlang.org/docs/handbook/modules.html

没有模块,过去的应用程序使用“脚本”元素 仔细订购,以便首先声明某些内容,然后才使用 在接下来的几个文件中。还有一些在以前的脚本文件中声明的东西, 不会被新变量覆盖。

另一方面,类是一个面向对象的编程概念,它封装了状态(字段)和行为(函数)。访问修饰符控制字段在类实例上的可用方式。公共(默认)、私有(类内部)和受保护(可在类和派生类中访问)。更多在这里,https://www.typescriptlang.org/docs/handbook/classes.html#classes

总结

简而言之,从模块中导入类,创建实例,使用公共方法和属性。我们还可以导入函数、常量、枚举等。它们可能是模块的一部分。可能无法像类一样提供封装和抽象。

【讨论】:

以上是关于Angular:导出类和公共类之间的区别?的主要内容,如果未能解决你的问题,请参考以下文章

Java自学-类和对象 访问修饰符

无法访问 DLL 外部的内部类和某些公共变量不可访问

接口 VS API VS 公共类

普通类抽象类和接口区别:

抽象类和接口联系与区别

Java访问权限-动力节点