目前我是这样定义我的模型类的:
export class Company {
constructor(
public id?: number,
public name?: string,
public shortName?: string
) {}
}
我使用?
的原因是,在这种情况下,如果我想将一个空company
对象分配给这样的变量,我不会得到属性值不提供的错误:
this.editDataItem = new Company();
我可以避免在模型声明中使用?
吗?或者这是正确的方式,如果我想分配一个空实例到一个变量没有声明所有的属性?这方面有什么最佳实践吗?
你也可以这样做,这是在JS中。
class Company {
constructor(
id = 0,
name = '',
shortName = ''
) {}
}
const company1 = new Company();
console.log(company1);
在Typescript中你可以这样做:
export class Company {
constructor(
public id: number = 0,
public name: string = '',
public shortName: string = ''
) {}
}
const company1 = new Company();
console.log(company1);
上面的代码片段将帮助您设置默认值,即使它们没有传递。这可能是一个更好的方法来实现这一点,?
接受undefined
作为值。
?
只是undefined
的简写。为了防止一个属性是undefined
,你需要在初始化时通过传递值给构造函数或设置默认值来设置它。
根据你的用例,这是一个完全有效和正确的方法来定义一个模型的属性类型。
你不妨把你的类改成:
export class Company {
id?: number;
name?: string;
shortName?: string;
constructor(
) {}
}
现在您仍然有公共属性,但它们默认为undefined
,并且不需要向构造函数传递任何值。