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

zag*_*ggi 15 typescript angular

我已经使用 Angular 工作了一段时间,但找不到关于以下方面的明确建议:

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

我有几次检查我的代码以在构造函数中移动简单类型(布尔值、数字等)的初始化,但仍然想知道这是更好的做法还是品味问题?对我来说,内联初始化会产生更本地化和简洁的代码,这就是我喜欢它的原因,但我对还是不对?

例子:

@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
  }
}
Run Code Online (Sandbox Code Playgroud)

Roy*_*y G 7

这是个人风格偏好。

在构造函数中初始化属性允许您在初始化属性时利用构造函数参数。

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

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


Ami*_*ani 5

基本上没有区别,只是方便而已。使用 constructor 初始化的唯一区别是您可以动态传递值然后分配给它。

constructor(visible) {
    this.isVisible = visible;  // <-- vs initialization in the constructor
}
Run Code Online (Sandbox Code Playgroud)