我正在构建一个角度应用程序,并且在model.ts文件中定义了几个os模型。 我已经在组件中创建了该对象的实例。但是,当我尝试直接将值分配给属性时,它说不能将值分配给未定义。
models.ts
export class Staff {
id: string;
name: string;
address: Address;
}
export class Address{
streetName: string;
zipCode: string;
}
component.ts
public staff: Staff = <Staff>{};
staff.address.zipCode = "28657";
在这里,当我尝试直接为邮政编码分配值时,会引发错误。 有没有一种方法可以使用默认的空值''声明对象?
答案 0 :(得分:0)
实例化新的Staff
时,所有值默认为null
。
因此,staff.address
是null
,您尝试访问zipCode
的{{1}}属性,这会导致给定的错误。
您可以定义自己的构造函数,在其中设置所需的默认值。
例如,在您的null
类中:
Address
实例化一个新的地址时调用构造函数。在此示例中,它采用可选参数constructor (zipCode?: string) {
if (zipCode) {
this.zipCode = zipCode;
}
// process other values
}
(由于zipCode
而可选)。因此,您可以像这样实例化它:
?
或类似这样:
address: Address = new Address();
Typescript为您提供了上述的简写形式:
address: Address = new Address("04107");
或 构造函数(私有zipCode:字符串=“ 04107”){}
通过使用constructor(private zipCode?: string) {}
(或private
)打字稿作为构造函数参数的前缀,会将这些变量自动添加到类中。
答案 1 :(得分:0)
在编译器部分中,有一个名为strictPropertyInitialization的属性,
此属性会强制您初始化属性
要解决此问题->在这样的编译器选项中设置false属性:
"strictPropertyInitialization": false