Typescript 正文和构造函数中设置变量之间的类型脚本差异

Typescript 正文和构造函数中设置变量之间的类型脚本差异,typescript,Typescript,这可能是以前问过的一个简单问题,但在谷歌上搜索类似于标题的东西并没有让我有所收获。我不知道如何恰当地表达这个问题,所以如果有人能让我知道正确的术语和回答这个问题的资源,那也会很好 在TypeScript中,在类的主体中指定变量之间有什么区别,如下所示: export class Test1 { var1 = 5; } export class Test2 { constructor() { this.var1 = 5; } var1: number; } 并在构造函

这可能是以前问过的一个简单问题,但在谷歌上搜索类似于标题的东西并没有让我有所收获。我不知道如何恰当地表达这个问题,所以如果有人能让我知道正确的术语和回答这个问题的资源,那也会很好

在TypeScript中,在类的主体中指定变量之间有什么区别,如下所示:

export class Test1 {
  var1 = 5;
}
export class Test2 {
  constructor() {
    this.var1 = 5;
  }

  var1: number;
}
并在构造函数中赋值,如下所示:

export class Test1 {
  var1 = 5;
}
export class Test2 {
  constructor() {
    this.var1 = 5;
  }

  var1: number;
}

使用一种方法比使用另一种方法更好吗?在某些情况下,是否需要使用一个而不是另一个?

属性初始值设定项发出的代码只是构造函数开头的赋值,因此这些代码在运行时特征方面完全相同


当属性之间没有依赖关系时,最好只使用初始值设定项语法。TypeScript不会强制执行任何特定的排序,也不会为您重新排序初始值设定项,因此在强制排序时在构造函数中写入初始化代码将更清楚地表明不应重新排序成员。

属性初始值设定项发出的代码只是构造函数开头的赋值,因此,就运行时特征而言,它们是完全等效的


当属性之间没有依赖关系时,最好只使用初始值设定项语法。TypeScript不会强制执行任何特定的排序,也不会为您重新排序初始值设定项,因此在强制排序时在构造函数中编写初始化代码将更清楚地表明不应该对成员进行重新排序。

让我们看看生成的javascript代码(没有缩小):

都一样


只要您的实例变量只是简单地分配了硬编码的基本类型,您就可以在类的主体中安全地分配它们。如果您有复杂的逻辑,或者在初始化另一个变量之前需要初始化一个变量,为了清晰起见,最好在构造函数中进行初始化。

让我们看看生成的javascript代码(没有缩小):

都一样


只要您的实例变量只是简单地分配了硬编码的基本类型,您就可以在类的主体中安全地分配它们。如果您有复杂的逻辑,或者如果您需要在初始化另一个变量之前初始化一个变量,为了清晰起见,最好在构造函数中进行初始化。

这两者之间没有区别,因为无论您添加什么变量id,都会进入构造函数,如果您看到它的java脚本转换,您将更好地理解它


更好的是,您应该在构造函数中分配变量,它将是运行时可分配的,并且更易于理解。

这两者之间没有区别,因为您添加的任何变量id都进入了构造函数,如果您看到它的java脚本转换,您将更好地理解它

更好的是,您应该在构造函数中分配变量,它将是运行时可分配的,并且更易于理解