在构造函数或声明中初始化变量

Lam*_*ert 9 typescript reactjs

将ReactJS与TypeScript一起使用时,最好是在构造函数中初始化类变量,还是在声明类变量时?无论哪种方式都可以正常工作,并且转换后的javascript看起来都是一样的.

export class MyClass extends React.Component<iProps, {}> {
      private myName: string = "Hello";

      constructor(props: iProps) {
         super(props);

         this.myName= "Hello";
      }
}
Run Code Online (Sandbox Code Playgroud)

Nit*_*mer 6

完全相同,例如:

class MyClass1 {
      private myName: string = "Hello";
}
Run Code Online (Sandbox Code Playgroud)

编译为:

var MyClass1 = (function () {
    function MyClass1() {
        this.myName = "Hello";
    }
    return MyClass1;
}());
Run Code Online (Sandbox Code Playgroud)

和:

class MyClass2 {
      private myName: string;

      constructor() {
         this.myName = "Hello";
      }
}
Run Code Online (Sandbox Code Playgroud)

编译为:

var MyClass2 = (function () {
    function MyClass2() {
        this.myName = "Hello";
    }
    return MyClass2;
}());
Run Code Online (Sandbox Code Playgroud)

操场上的代码

如您所见,编译版本是相同的(类名除外)。
因此,您可以使用哪个更优雅。

至于反应,您可以使用传递给构造函数的道具。
将es6样式类与react组件一起使用时,初始状态将在构造函数中分配,而不是使用getInitialState方法。
如果您的初始状态是道具的函数,那么您需要在构造函数中使用它们。