在TypeScript中定义模型类



目前我是这样定义我的模型类的:

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,并且不需要向构造函数传递任何值。

最新更新