Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用强类型类是否会产生更高效的Javascript?_Javascript_Angular_Typescript - Fatal编程技术网

使用强类型类是否会产生更高效的Javascript?

使用强类型类是否会产生更高效的Javascript?,javascript,angular,typescript,Javascript,Angular,Typescript,我正在将一个大型.NET WinForms业务应用程序移植到Angular。我有一个包含大量(~1500)实体的数据模型。在.NET应用程序中,每个实体都是由一个简单的类建模的,这些类中的绝大多数除了公开实体字段的属性之外没有其他方法。它们基本上仅用于类型安全 在基于Javascript的应用程序中重现这一点是一个好主意,还是(因为我使用的是Typescript)应该只使用接口来强制编译时类型安全?考虑到Javascript更灵活的定义对象的方法,我可以在运行时添加所需的属性吗 我特别感兴趣的是

我正在将一个大型.NET WinForms业务应用程序移植到Angular。我有一个包含大量(~1500)实体的数据模型。在.NET应用程序中,每个实体都是由一个简单的类建模的,这些类中的绝大多数除了公开实体字段的属性之外没有其他方法。它们基本上仅用于类型安全

在基于Javascript的应用程序中重现这一点是一个好主意,还是(因为我使用的是Typescript)应该只使用接口来强制编译时类型安全?考虑到Javascript更灵活的定义对象的方法,我可以在运行时添加所需的属性吗


我特别感兴趣的是,知道大量的类定义是否会影响性能,或者更确切地说,拥有强类型类是否会提高性能

tldr;我只想使用接口来定义所需数据的形状,因为这在JS代码中更容易使用

指出,在实例化大量对象之前,差异并不大——我想说每秒有数百万个对象

关于Node的性能,这将让您了解它在Chrome中的表现(更不用说其他浏览器了)

比性能效率更大的问题是开发人员的效率。我认为接口作为一种更轻量级的语言结构,比类更容易推理。事实上,很容易将现有接口与其他类型、接口或匿名类型混合,如下所示:

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个,您不会产生显著的运行时开销。

tldr;我只想使用接口来定义所需数据的形状,因为这在JS代码中更容易使用

指出,在实例化大量对象之前,差异并不大——我想说每秒有数百万个对象

关于Node的性能,这将让您了解它在Chrome中的表现(更不用说其他浏览器了)

比性能效率更大的问题是开发人员的效率。我认为接口作为一种更轻量级的语言结构,比类更容易推理。事实上,很容易将现有接口与其他类型、接口或匿名类型混合,如下所示:

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?不,这实际上只是一个编译器技巧-类似于get;设置in.NetTypes只影响编译期间的类型检查。它们在运行时不存在(装饰器发出的类型除外)。考虑到Javascript更灵活的定义对象的方法,我可以在运行时添加所需的属性这样你就失去了类型安全性。如果你不需要TS提供的东西,例如类型安全、IDE自动完成和自我文档,那么就坚持使用JS。我认为如果你使用getter和setter,TS属性类型在JS中会得到某种程度的保留,但在JS中,我的直觉似乎再次被发现是缺乏的!基本上,函数没有可靠的返回类型-它可以返回任何东西?但是,我不知道如何通过在运行时向对象添加属性而失去类型安全性?假设我从API调用返回了一些JSON,使用JSON.parse并将结果对象设置为接口中定义的变量类型。从这一点上讲,我有compliler类型检查和IDE自动完成,这正是我想要的,不是吗?是什么让你怀疑它们会提高性能?在编译语言中,知道数据的形状意味着代码可以优化,我只是不确定同样的想法是否适用于Javascript?不是,这实际上只是一个编译器技巧——类似于get;设置in.NetTypes只影响编译期间的类型检查。它们在运行时不存在(装饰器发出的类型除外)。考虑到Javascript更灵活的定义对象的方法,我可以在运行时添加所需的属性这样你就失去了类型安全性。如果你不需要TS提供的东西,例如类型安全、IDE自动完成和自我文档,那么就坚持使用JS。我认为如果你使用getter和setter,TS属性类型在JS中会得到某种程度的保留,但在JS中,我的直觉似乎再次被发现是缺乏的!基本上,函数没有可靠的返回类型-它可以返回任何东西?但是,我不知道如何通过在运行时向对象添加属性而失去类型安全性?假设我从API调用返回了一些JSON,使用JSON.parse并将结果对象设置为接口中定义的变量类型。从这一点上,我有compliler类型检查和IDE自动完成,这正是我想要的,不是吗?