网站搜索

javascript - 如果已经有类存在,为什么我在 Angular 中还应该使用接口作为数据类型?


我最近看了我老师的教程,他给我们展示了这段代码:

他还说,products 数组的类型是 any [],没有利用强类型的优势,这是 TypeScript 的一个特性,所以它应该被定义为接口,但我现在想知道,为什么他没有创建一个类,而那个 products 数组可能应该是那个类的类型?

他说接口的目的是提供强类型和工具支持。所以他写了这个接口:

所以我想知道他为什么没有创建一个像这样的类:

export class Product .. 之后他会使用 products : Product [] ..

所以基本上我无法理解为什么这里将接口作为数据类型比类更好?

抱歉提供的是截图而不是真正的代码,那是因为他提供的是在线视频课程。

谢谢

答案#1

查看这段由 James Henry 写的文字,也许它能让你更清楚这个问题。简而言之:与类不同,接口在编译期间会被完全移除,因此它们不会给我们的最终 JavaScript 代码增加任何不必要的负担。

答案#2

把接口看作是你对象的蓝图——一套简要的说明,保证带有该接口的对象上会有某些字段/方法可用。它们为你提供了一种利用强类型的方式,同时保持代码尽可能轻量。如前所述,接口在编译时会被移除,因为它实际上没有任何程序上的影响——它严格是为了使代码更少出错,并让你和其他人更容易使用。

如果你需要指定实现细节,例如 getter/setter/构造函数逻辑或方法,那么你就会使用类。事实上,如果你例子中 calculateDiscount() 方法的逻辑预期在所有产品中保持不变,那么在这种情况下使用类可能更合理。