我正在致力于将大型 .NET WinForms 业务应用程序移植到 Angular。我有一个包含大量(~1500)实体的数据模型。在 .NET 应用程序中,每个实体都由一个简单的类建模,这些类中的绝大多数除了公开实体字段的属性之外没有任何方法。它们本质上仅用于类型安全。
在基于 Javascript 的应用程序中重现此内容是个好主意吗?或者(因为我使用的是 Typescript)我应该只使用接口(interface)来强制编译时类型安全?鉴于 Javascript 定义对象的方法更加灵活,我可以在运行时添加我需要的属性吗?
我特别想知道大量的类定义是否会影响性能,或者更确切地说,拥有强类型的类是否真的会提高性能。
最佳答案
tldr;我只会使用接口(interface)来定义您需要的数据形状,因为这在 JS 代码中更容易使用。
This SO answer指出,除非实例化大量对象,否则差别不大 - 我想说每秒数百万个对象。
Here's a good article关于 Node 中的性能,这将使您了解 Chrome 中的性能(更不用说其他浏览器了)。
比性能效率更大的问题是开发人员效率。我认为接口(interface)作为一种更轻量级的语言构造,比类更容易推理。事实上,将现有接口(interface)与其他类型、接口(interface)或匿名类型混合起来很容易,如下所示:
interface Map {
map: Function
}
interface Reduce {
reduce: Function
}
type CustomType = Map & Reduce & { sum: Function }
const a: CustomType = {} // now you need to implement map, reduce, and sum
您无需使用 class 关键字即可获得强大的推理能力,并且开销为 0。但是,如果类与您的团队/代码库/用例更加契合,那就去做吧。只需 1500 个,您就不会产生大量的运行时开销。
关于javascript - 使用强类型类会提高 Javascript 的效率吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46981436/