javascript - 使用强类型类会提高 Javascript 的效率吗?

标签 javascript angular typescript

我正在致力于将大型 .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/

相关文章:

javascript - Instagram 自动评论

Angular 4 Material 2 - 中心选项卡组件

javascript - 变量使用时的内存使用

angular - 类型 'coords' 上不存在属性 'MouseEvent'。在 Angular2-google-maps 标记事件中

javascript - PixiJS 调整渲染器大小但保持比例?

javascript - ruby on Rails 无法正确加载 Node.js

angular - @input() 标签可用于 Angular 中的类吗?

Typescript:使用函数数组的 ReturnType(已编辑)

javascript - 在python中使用selenium执行javascript console.log的确切方法

angular - 命名空间 'firebase' 没有导出成员 'firestore'