有一个带有一组相同类型属性的类。它们都将成为另一个类的实例。因此,我需要先定义它们,然后在构造函数内部对其进行初始化。注意:由于$ window模块,我不能将其与声明一起使用,该模块仅在constuctor上可用。
我不想一个接一个地初始化它们,这只是一个猴子工作。
这是我的课:
export class MyService {
public signal1: Signal;
public signal2: Signal;
public signal3: Signal;
public signal4: Signal;
// ...
/*@ngInject*/
constructor($window: any) {
this.signal1 = new $window.signals.Signal();
this.signal2 = new $window.signals.Signal();
this.signal3 = new $window.signals.Signal();
this.signal4 = new $window.signals.Signal();
// ...
}
}
TypeScript版本:1.4.1
问题是:我可以在构造函数中一次初始化所有属性,而无需重复任何代码吗?
先感谢您。
好吧,这就是我要做的工作。感谢@basarat提供的指导:
export class MyService {
// initialize every attribute with null otherwise typescript ignores it
public signal1: Signal = null;
public signal2: Signal = null;
public signal3: Signal = null;
public signal4: Signal = null;
// ...
/*@ngInject*/
constructor($window: any) {
// get all properties of "this"
for (var property in this) {
if (this.hasOwnProperty(property)) {
this[property] = new $window.signals.Signal();
}
}
}
}
因此,我现在要做的唯一一件事就是用null初始化新添加的信号,其他所有操作都是自动完成的。好吃!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句