类属性初始值中的TypeScript差异

类属性初始值中的TypeScript差异,typescript,class,Typescript,Class,在TypeScript中,在定义中为类属性提供初始值与在构造函数中提供初始值之间有什么区别吗 class Car { engine = 'hybrid'; } VS 这两种选择之间没有区别。 编译您提供的两个代码版本时,将得到相同的结果: var-Car=/**@class*/(函数(){ 多功能车(){ 这个引擎=‘混合动力’; } 返回车; }());首选构造函数。它的目的是初始化变量。当代码传输到JS时,查看代码的人可能会首先查看构造函数,以查看初始化值(参见@Gil的答案) 实际

在TypeScript中,在定义中为类属性提供初始值与在构造函数中提供初始值之间有什么区别吗

class Car {
  engine = 'hybrid';
}
VS


这两种选择之间没有区别。 编译您提供的两个代码版本时,将得到相同的结果:

var-Car=/**@class*/(函数(){
多功能车(){
这个引擎=‘混合动力’;
}
返回车;

}());首选构造函数。它的目的是初始化变量。当代码传输到JS时,查看代码的人可能会首先查看构造函数,以查看初始化值(参见@Gil的答案)

实际上,在TypeScript中有一个区别(但在您的示例中没有,因为您的构造函数没有任何参数)。 如果您想将参数传递给构造函数类,那么TypeScript的神奇之处就在于TS包含了一种从构造函数参数创建和分配类实例属性的简洁方法

假设我们有一门课:

class MyClass {
  private prop: string;

  constructor(prop: string) {
    this.prop = prop;
  }
}
可以在添加属性修改器的一行代码中编写:

class MyClass {
  constructor(private prop: string) { }
}
这将在类中创建
prop
属性,并使用构造函数参数中的新值对其进行初始化。定义
private/public/protected
修改器取决于您的类逻辑

最后一种情况-如果未设置修改器:

class MyClass {
  constructor(prop: string) {
    // prop variable is available here
  }
  // prop variable is not available outside the constructor method
}

太棒了,塔克斯!请参阅此以了解它们之间的差异-
class MyClass {
  constructor(prop: string) {
    // prop variable is available here
  }
  // prop variable is not available outside the constructor method
}