【发布时间】:2017-04-08 15:11:37
【问题描述】:
如果用户省略了类成员属性的默认值,有什么方法可以分配它们?
我有一个自定义类,其中包含另一个类的可选实例:
export class MyClass1 {
constructor() {
this.name = "";
this.classInstance = new MyClass2();
}
name: string; // name of the object
classInstance?: MyClass2;
}
class MyClass2 {
constructor() {
this.name = "MyClass2 initial name";
}
name: string;
}
MyClass1 的内容来自 JSON,所以有些时候成员变量 classInstance 可以是未定义的。在这些情况下,我希望 MyClass1 构造函数将 new MyClass2() 初始化到 classInstance 成员变量中。
这就是我分配创建 MyClass1 实例的方式:
let myNewClass: MyClass1 = {
name: "MyClass"
}
因为 classInstance 被省略,我假设它会在构造函数中设置默认值。然而,这种情况并非如此。我还尝试从 classInstance 变量中删除可选符号,但这会产生编译错误,因为对象必须与 MyClass1 的结构相匹配。我想我通过强制转换成功编译没有错误,但它并没有解决问题(虽然我不确定这是否正确编译):
let myNewClass: MyClass1 = {
name: "MyClass"
} as MyClass1
在这两种情况下,classInstance 都没有得到构造函数设置的默认值,结果是 null/undefined。
对我来说,如何解决转换问题并不重要(无论是设置属性可选还是使用转换),只要我可以控制默认值。
【问题讨论】:
标签: typescript default