使用类vs接口的内存和性能成本

时间:2019-06-18 10:31:06

标签: javascript angular typescript

在为我的角度应用程序编写打字稿时,我可以使用接口或类创建域对象。我正在寻找有关使用类方法的实际成本的硬数据。

我知道使用接口不会生成任何javascript代码,但是使用类会生成任何JavaScript代码。两种方法都具有自动完成和语法检查的优点。

我看到使用类的更多好处  -易于单元测试  -可以将业务逻辑添加到域对象(使用域驱动设计时听起来不错)  -我们可以强制域对象不可变

因此,从逻辑上讲,接口要便宜一些,但我试图弄清楚使用类的成本是否真正超过了收益。

为此,我想知道其他人在实际应用中比较这两种方法的经验。或者人们是否知道在该领域已经进行的性能测试。

到目前为止,我已经发现了这个问题(classes vs interfaces in Angular(TypeScript)),该问题建议在我的数据模型中使用接口,但是并没有给出任何硬数据来决定哪种方法最适合我。 / p>

1 个答案:

答案 0 :(得分:1)

对于超简单的数据对象,使用接口(或类型)。示例:参数对象、值类型和任何其他不需要任何内置逻辑的对象。

对于任何更复杂的事情,请使用类。与您获得的好处相比,这种选择的开销很小,例如能够将一些简单的逻辑放入类中,这样您就不会'不需要将其卸载到服务中。类定义需要一点内存,但在运行时,类只是表示对象的特定原型。

我承认这个答案不包括任何实际性能或统计数据,但这些在很大程度上取决于对象和上下文的类型。

另见this great comment on Github