组件类变量的初始化

use*_*300 6 typescript angular

我从angular2开始,我想知道这个代码

export class HeroesComponent implements OnInit {

    // Version 1
    myHero: Hero = new Hero('Superman', 'Clark Kent');

    // Version 2, 3
    // myHero: Hero;

    constructor() {
        // Version 2
        // this.myHero = new Hero('Superman', 'Clark Kent');
    }

    ngOnInit() {
        // Version 3
        // this.myHero = new Hero('Superman', 'Clark Kent');
    }

}
Run Code Online (Sandbox Code Playgroud)

现在我已将myHero初始化为顶部,但我想知道,顶部是什么,构造函数内部应该是什么以及ngOnInit内部是什么?

因为据我所知,如果它位于顶部,它会立即执行,与构造函数一样,并且ngOnInit?

那有什么区别,什么是正确的?

谢谢

Nit*_*mer 7

在声明和构造函数中分配值是完全相同的,实际上是这个的编译版本:

class HeroesComponent implements OnInit {
    myHero: Hero = new Hero('Superman', 'Clark Kent');
}
Run Code Online (Sandbox Code Playgroud)

方法是:

var HeroesComponent = (function () {
    function HeroesComponent() {
        this.myHero = new Hero('Superman', 'Clark Kent');
    }
    return HeroesComponent;
}());
Run Code Online (Sandbox Code Playgroud)

至于那个ngOnInit,它取决于构造函数是否Hero取决于在ngOnInit被触发之前可能没有准备好的任何东西.