Typescript类属性的初始化顺序

时间:2018-12-10 13:23:51

标签: typescript

说我有一个课程,例如:

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

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

   ...
}

变量初始化顺序是什么?

1 个答案:

答案 0 :(得分:4)

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

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;
}());

所以顺序是:

  1. 构造函数字段简写
  2. 属性初始化器
  3. 构造函数体。