与在Angular中使用TS的构造函数相比,在声明期间内联初始化变量

时间:2018-07-24 08:35:16

标签: angular typescript

我已经在Angular工作了一段时间,但找不到关于的明确建议:

内联与构造函数中初始化成员变量

我曾经审查过几次代码,以在构造函数中移动简单类型(布尔,数字等)的初始化,但是仍然想知道这是更好的做法还是出于品味?对我来说,内联初始化产生的代码更加本地化和简洁,这就是为什么我更喜欢它,但是我对吗?

示例:

@Component({
  selector: 'app-elem',
  templateUrl: './app-elem.component.html',
  styleUrls: ['./app-elem.component.scss'],
})
export class AppElemComponent {

  public isHidden = true;    // <-- initialization inline
  public isVisible: boolean;

  constructor() {
    this.isVisible = true;  // <-- vs initialization in the constructor
  }
}

2 个答案:

答案 0 :(得分:2)

基本上没有区别,只是方便。使用constructor初始化的唯一区别是可以动态传递值,然后将其赋值。

constructor(visible) {
    this.isVisible = visible;  // <-- vs initialization in the constructor
}

答案 1 :(得分:2)

这是个人风格的偏好。

在构造函数中初始化属性使您可以在初始化属性时利用构造函数参数。

内联初始化属性更加简洁,并在声明的上下文中更加保留属性的默认值。

TypeScript编译器只是将初始化的值引入构造函数中 https://www.typescriptlang.org/play/