【发布时间】:2017-10-27 18:35:39
【问题描述】:
我正在将大型 .NET WinForms 业务应用程序移植到 Angular。我有一个包含大量(~1500)实体的数据模型。在 .NET 应用程序中,每个实体都由一个简单的类建模,这些类中的绝大多数除了公开实体字段的属性之外没有任何方法。它们基本上仅用于类型安全。
在基于 Javascript 的应用程序中重现这一点是一个好主意,还是(因为我使用的是 Typescript)我应该只使用接口来强制编译时类型安全?鉴于 Javascript 定义对象的方法更灵活,我可以在运行时添加我需要的属性吗?
我特别想知道大量的类定义是否会影响性能,或者更确切地说,拥有强类型类是否真的会提高性能。
【问题讨论】:
-
是什么让您怀疑它们会提高性能?
-
在编译语言中,知道数据的形状意味着可以优化代码,我只是不确定同样的想法是否适用于 Javascript?
-
不,这实际上只是一个编译器技巧 - 类似于 get;放;在.Net中
-
类型只影响编译期间的类型检查。它们在运行时不存在(装饰器发出的类型除外)。 鉴于 Javascript 定义对象的更灵活方法,我可以在运行时添加我需要的属性吗? - 这样就失去了类型安全性。如果你不需要 TS 提供的东西,即类型安全、IDE 自动补全和自文档,请坚持使用 JS。
-
我认为如果您使用 getter 和 setter,TS 属性类型会以某种方式保留在 JS 中,但似乎我的直觉再次发现在 JS 方面缺乏!基本上一个函数没有可靠的返回类型——它可以返回任何东西?但是,我没有看到通过在运行时向对象添加属性来失去类型安全性?假设我有一些从 API 调用返回的 JSON,使用 JSON.parse 并将结果对象设置为我的接口中定义的类型变量。从现在开始,我有编译器类型检查和 IDE 自动完成功能,这正是我想要的,不是吗?
标签: javascript angular typescript