Typescript类属性初始化顺序

Typescript类属性初始化顺序,typescript,Typescript,假设我有一门课,比如: class MyClass { private readonly prop1 = "prop1" private readonly prop2: string constructor( prop2 = "defaultProp2", private readonly prop3 = "defaultProp3" ) { this.prop2 = prop2 } ... } 变量初始化顺序是什么?如果编

假设我有一门课,比如:

class MyClass {
   private readonly prop1 = "prop1"
   private readonly prop2: string

   constructor(
     prop2 = "defaultProp2",
     private readonly prop3 = "defaultProp3"
   ) {
     this.prop2 = prop2
   }

   ...
}

变量初始化顺序是什么?

如果编译到
ES5
,则可以在向下编译代码时看到初始化的顺序(使用本机类时,顺序是一致的)

因此,顺序是:

  • 构造函数字段速记
  • 属性初始值设定项
  • 构造函数主体

  • 谢谢那么ES6呢?@LppEdd我查过了,目标之间的顺序是一致的(正如我预期的那样)太棒了,谢谢。我见过TS操场似乎只针对ES5@LppEdd是的,那是真的。我必须测试局部为什么为什么构造函数速记是第一个,但是Boad最后和类字段插入中间?编辑:哦,因为如果我想在构造函数中指定一个属性,它必须先初始化。有道理。
    var MyClass = /** @class */ (function () {
        function MyClass(prop2, prop3) {
            if (prop2 === void 0) { prop2 = "defaultProp2"; }
            if (prop3 === void 0) { prop3 = "defaultProp3"; }
            this.prop3 = prop3;
            this.prop1 = "prop1";
            this.prop2 = prop2;
        }
        return MyClass;
    }());